
Koen Claessen
... (\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?