In a previous life I would write Camlp4 extension for fun, and I used the syntax
  \( ... _ ...)
to abstract over an anonymous variables (you could also use \1 \2 \3 etc, and the n-th occurence of _ from left to right was turned into \n, but mixing numbers and _ was disallowed). It solves Scala's problem that, the scope of _ being delimited by the closest parentheses, the notation was not composable -- but arguably enforcing a small scope is a good thing.

This is the kind of features that nobody will ever agree on, so it's too hard to get them in a language. Nowadays I write "(fun x ->" instead of "\(", and "x" instead of "_", and it is not that bad.

Arthur Charguéraud has been working on an "easy-type-errors" mode with better typing error messages for OCaml. You may be interested in his article
  http://www.chargueraud.org/research/2015/ocaml_errors/ocaml_errors.pdf
although I think this specific case of under-application is not discussed (using too many argument is discussed).

I also find the work on SHErrLoc, by Danfeng Zhang, Andrew C. Myers and their collaborators, to be very impressive:
  http://www.cs.cornell.edu/Projects/SHErrLoc/

On Sat, Nov 21, 2015 at 6:24 PM, Hendrik Boom <hendrik@topoi.pooq.com> wrote:
On Fri, Nov 06, 2015 at 01:34:11PM +0100, Gabriel Scherer wrote:
>
> I personally believe that currified constructor syntax would be a better
> choice, and that using non-currified constructors is a historical mistake
> of SML/Caml. But I am also not convinced that efforts to change it today
> are worth the trouble, and prefer to concentrate on improving other parts
> of the OCaml ecosystem.

Perhaps there should be explicit syntax for currying, such as
   f a b _
instead of
   f a b
That would permit currying in other argument positions:
   f a _ c
though I suspect _ may be the wrong symbol for the current language, and
I also suspect it's far too late tointroduce it in the current language.

I have noticed that almost a the situations where the compiler thinks I
mean to curry I actually just left out a parameter by mistake.  The type
inferences it makes based on these errors usually occur elsewhere and
are truly mystifying.

-- hendrik

--
Caml-list mailing list.  Subscription management and archives:
https://sympa.inria.fr/sympa/arc/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs