This seems too brittle to me.  The examples conveniently include only lambda 
parameters in their function calls.  Suppose you have:

a = f{|| 42}

and want to add a second lambda parameter:

a = f{|| 42}{|x| x*x}

So far so good, ignoring the little bug that || is a different token than two 
|'s (we've yet to have a coherent discussion about what really can go into 
these parameter lists).

Now you want to add a third integer parameter:

a = f{|| 42}{|x| x*x}(7)

Well, that won't work, as it curries rather than supplying the third parameter. 
 Instead you'd need to do:

a = f({|| 42},{|x| x*x},7)

Oh, and don't forget to now insert the comma between the }{.  You'll get 
something entirely different (a lambda called with a lambda parameter, which it 
then ignores) if you omit it.


The other problem is the necessity of the [no line terminator here] imposed by 
semicolon insertion.  It's very tempting to write

a = f
  {|x| x*x}

which will at best be a syntax error or at worst be two separate statements 
(depending on whether we allow a lambda to start a statement).

    Waldemar
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to