# partial application

**Pixel
**
pixel@mandrakesoft.com

*18 Mar 2002 17:30:34 +0100*

Koen Claessen <koen@cs.chalmers.se> writes:
[...]
>* ... (\x -> f x 2 3) ...
*>*
*>* This seems rather ugly, since the order of arguments in a
*>* function plays a crucial role. For example, the map function
*>* takes the list as its second argument, since it is so much
*>* more common to partially apply map with the function rather
*>* than the list.
*
For sure the order of arguments play a crucial role in MLs.
I don't know many other syntax:
- merd http://merd.net/choices_syntax.html#function_calls
f(1, 2, ) is (f 1 2)
f(, 2, 3) is (\x -> f x 2 3)
- OCaml's labels http://caml.inria.fr/ocaml/htmlman/manual006.html
f ~y:2 ~z:3 is (\x -> f x 2 3)
- Pop-11 http://www.cs.bham.ac.uk/research/poplog/primer/node96.html
f(% 2, 3 %) is (\x -> f x 2 3)
I'm interested in other syntaxes...
>* For 2-argument functions, the sections notation might help:
*>*
*>* (1 `f`) -- === (f 1) === (\y -> f 1 y)
*>* (`f` 2) -- === (\x -> f x 2)
*
I never thought of this :)
Of course it also works with more than 2-argument functions when you want to
partially apply only the 2 second argument:
(`f` 2) 1 3
>* In a distant past, Erik Meijer and I experimented with
*>* introducing the syntax:
*>*
*>* (f 1 2 _)
*>* (f 1 _ 3)
*>* (f _ 2 3)
*>*
*>* But it became all very clumsy.
*
do you have more info on this?