On Jan 12, 2012, at 2:23 PM, François REMY wrote:

> 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.

So simple, and so brilliant. I love it!

I must say, the parens look much prettier to me, and they're of course more 
consistent with JS precedent.

It does help to write a reasonable chunk of code to compare syntaxes for uses 
of a feature "in the wild." Does some enterprising es-discusser wanna take a 
big JS program with a bunch of little anonymous functions, swap them out with 
block lambdas, and make two gists with the two different syntaxes? That'd be 
super helpful.

> 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.

I don't understand what you're referring to here -- what do you mean by 
"unprefixed anonymous block?"

> Does it seems possible/acceptable?

Lovely.

Dave

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

Reply via email to