On Nov 22, 2010, at 11:35 PM, Brendan Eich wrote:

> On Nov 22, 2010, at 11:19 PM, Maciej Stachowiak wrote:
> 
>>> Probably we need to take our time and not rush into a meta-programming-here 
>>> syntax variant of for-in. I'll not propose anything better right now.
>> 
>> If the colon is less future-compatible than we like, why not:
>> 
>> foreach (var i in x)
> 
> All the new words are not reserved, so they could begin a function call 
> expression in extant code:
> 
> hi = "there"
> foreach (i in x)
>  print(i)
> 
> means
> 
> hi = "there"; foreach(i in x); print(i);
> 
> today. Same if you s/foreach/iterate/ or any non-reserved identifier. 
> Wherefore Allen's co-opting of enum (plus with, a decent preposition given 
> enum but 8 chars in two keywords hurt kittens everywhere).

One possibility is to add a space as apparently a few other languages do:

for each (var i in x)

Should be unambiguously parsable and easy to understand.

> 
> Anyway, the bikeshed is secondary. We need to agree on what meta-programmable 
> for-in means with the enumerate trap (specified by the wiki pages on 
> harmony:proxies), how that changes with the optional iterate trap 
> (strawman:iterators), and when it might matter (for all for-in loops, or only 
> those in Harmony code?).

Fair enough. Another important question is whether for..in should continue to 
guarantee that all values enumerated would be strings. Preserving that 
guarantee clearly makes for..in useless for the strawman:iterators purpose, but 
not for the harmony:proxies enumeration trap (and thus iterators would need new 
syntax to be usable).  Breaking the guarantee may cause problems for existing 
code. Breaking the guarantee only in Harmony mode creates additional migration 
tax. Thus, iterators create a potential motive for new syntax that the proxy 
enumeration trap does not. 

Given this, it is useful to identify candidate syntax that doesn't have 
perceived showstopper problems, so that we can evaluate the tradeoffs among the 
three prongs of the trilemma.

(As an even more concrete previously mentioned example, a new syntax allows 
sane defaults for arrays without breaking compatibility for the existing 
construct.)

Regards,
Maciej

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to