On Jan 12, 2012, at 3:41 PM, Jon Zeppieri wrote:
>> 
> 
> An additional consideration: for a block lambda's completion value to
> be another block lambda, the {( syntax would require parenthesis,
> while the {| syntax would not:

No, since a Statement can not begin with a { character parenthesis would be 
required in using either syntax.  Also note that they would also be required if 
completion value of the BlockLambda is provided by an object literal:
    
       {| a,b | ({x: a,y: b})}   //syntax error if parenthesis around object 
literal are removed


> ...
> 
> With the grammar François is suggesting, this would be a syntax error
> (I think), since the body of a block lambda is a StatementList_opt.
> The {| syntax, on the other hand, can accommodate block lambdas as
> expression statements, though, given another token of lookahead
> (again, I think).

With two token look-ahead a | BlockLambda could be allowed at the head of a 
statement, but it still would not enable unparenthesized object literals at the 
head of a statement.  It seems like a cognitive burden to allow one  but not 
the other.  A simple "{ at the start of an expression statement must be 
parenthesized" rules seems easiest to learn and remember.

Allen







> 
>> 

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

Reply via email to