On May 29, 2011, at 7:17 AM, Jose Antonio Perez wrote:

> 2011/5/29 Dmitry A. Soshnikov <dmitry.soshni...@gmail.com>
> 
> That's it, exactly. We always looking for a shorter sugar. Though, the main 
> thing that the sugar shouldn't be cryptic at the same time. Probably Erlang's 
> list comprehensions are cryptic for someone, but again, taking into account 
> arrow-functions, seems arrow-comprehensions aren't so cryptic.
> 
> I think that your proposal based in Haskell's syntax is natural,clear and 
> easy for the user. A EBNF grammar for it:
> 
> ListComprehension :  '[' Expression '|'  IterableOrFilter 
> (,IterableOrFilter)+ ']'
> IterableOrFilter:          Id '<-' ArrayOrGenerator | BooleanFilter
> 
> The problem is the LL(1) conflict with Array Literal, but that doesn't matter 
> much, right?  ;)

No, it's a big incompatibility that could result in no early error, rather a 
shift in meaning.

We're not doing those without a really good reason. We don't have one here.

People seem to forget that | is an operator in the language. In 
http://wiki.ecmascript.org/doku.php?id=strawman:block_lambda_revival I worked 
around the lesser problem of parameter default values by requiring any default 
value using bitwise-or to be parenthesized:

  blam = {|x = (y | z)| x*x};

But block-lambdas do not use [] where | may be an operator in a single element 
initialiser expression, so there's no further incompatibility.

Not so with square brackets.

Array comprehensions using for-in or the replacement (paren-free, probably 
"for-of") Harmony syntax are in for ES.next.

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

Reply via email to