Block lambda is cool, its syntax isn't

Thaddee Tyl thaddee.tyl at gmail.com
Thu Jan 12 14:39:03 PST 2012


On Thu, Jan 12, 2012 at 11:23 PM, François REMY
<fremycompany_pub at yahoo.fr> wrote:
> Am I wrong if I say there not a bigger issue with block lambda than with the
> current object notation on the matter?
>
> I mean, does that code mean anything useful?
>
>   function() {
>       {|a,b| a+b};
>   }
>
> If not (as it seems to me), it means that a block lambda will not be used as
> a statement by itself. If it's the case, it should defined as an Expression
> only, where there's no anonymous block to conflict the syntax. That solution
> has been chosen for object notation in the past. That way,
>
>   function() {
>       {
>           (a, b)
>           a.add(b)
>       }
>   }
>
> would still be an anonymous block where
>
>   function() {
>       asyncAction(..., { (a, b) a.add(b); } }
>   }
>
> would be a block lambda as an argument of an async function. No semantic
> change for an identical syntax, in regards to strict ES5.
>
> The case where you would like to use a block lambda as a stament can be
> resolved by adding parenthesis, like with the current object notation. And
> since I still continue to hope we'll ditch the unprefixed anonymous block in
> some future revision of ES, that very small edge case could vanish at the
> same time.
>
> Does it seems possible/acceptable?

Looks like a great idea to me!


More information about the es-discuss mailing list