Fwd: Array comprehension syntax
Brendan Eich
brendan at mozilla.com
Sat Sep 22 10:39:27 PDT 2012
Jason Orendorff wrote:
> On Sat, Sep 22, 2012 at 11:21 AM, Brendan Eich<brendan at mozilla.org>
> wrote:
>> Perhaps the thing to do is keep to Python: for+ if? if you get my
>> pidgin-EBNF.
>
> But that isn't Python's syntax.
> Python's comprehensions are: for (for|if)*
Oh! I didn't know you could put if in the middle (or I forgot, more
likely...).
> Haskell's comprehensions are: (for|if|let)*
> This is what I would prefer for JS.
>
> Clojure's comprehensions are: for+ (if|while|let)*
> Clojure puts the expression at the right, which I like, for the
> reasons Allen mentioned.
We could do whatever we like but it will be a pain to parse both old and
new in SpiderMonkey!
Actually I think we should not change lightly, not just based on
SpiderMonkey, but on SM + Rhino + (Python being closer to JS in
community intersection size than Clojure).
> CoffeeScript's comprehensions are: for when?
> Only a single 'for' clause. It can't be used to flatten an array of
> arrays.
Yeah, not as strong a precedent -- we should treat JS as big brother
here, over time.
> I actually kind of like Allen's argument about not wanting to
> encourage the use of array comprehensions for complicated use cases.
> However I'm not sure how that squares with a distaste for nanny syntax
> restrictions!
Yup. I thought perhaps Allen left out a "not" or otherwise inverted his
meaning, though.
/be
More information about the es-discuss
mailing list