On Fri, Sep 21, 2012 at 4:32 PM, Jason Orendorff <[email protected]> wrote: > 1. It seems simpler and more general to accept arbitrary sequences > of 'for' and 'if' clauses: > > [x if x !== undefined] > [g for u of users if u.isAdmin() for g of u.groups()] > > In the current draft only [Expr ForClause+ IfClause?] is allowed.
I assume this is meant to match Python's syntax. > 2. These comprehensions are permitted: > [EXPR for x of obj if a, b, c] > [EXPR for x of obj if x = 3] > > The first is surprising to me for two reasons: first, because > commas in an array literal usually separate array elements, > whereas these are sequencing commas; second, it's odd that > commas are not permitted in the EXPR part of the comprehension > but are permitted in the if-condition. No strong opinion, but I'd be fine with your suggested change. Sequencing commas in an if statement are weird anyway. > The second is not so surprising, but it occurs to me that > unparenthesized assignment in this context will usually be a > mistake, so it might be nice to make that a syntax error. Again, no strong opinion, but this kind of thing is occasionally useful, despite the hazard. > 3. SpiderMonkey already supports this nonstandard syntax: > [x for each (x in obj)] > A paren-free ES6 array comprehension could begin with a function > call, like this: > [x for each(x in obj).y of z] > Currently SpiderMonkey treats 'each' as a keyword when it > appears after the 'for' keyword. > > The two syntaxes are distinguishable in all cases, right? > It's a little painful to get NotIn right in this case, but we can > hack it. As long as the syntax is unambiguous. I assume that they're always distinguishable due to the presence/absence of a space after "each", yes. ~TJ _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

