On Jul 30, 2010, at 12:06 PM, felix wrote:
actionscript 3 has
for (key in a) {}
for each (val in a) {}
This is from ECMA-357, E4X, and it is in SpiderMonkey and Rhino too -- it's not original to AS3.
It's also something we agreed (crock too, IIRC) was too vague: "each" does not scream "value, not key".
But beyond that, iteration in general is not necessarily visiting properties in an object, and then you have to choose an obscure keyword or preposition to choose value or key. Iteration is a stream of values, no properties needed at all.
In that light, and in light of Mathematics as well as Python and JS1.7+, it is hard to beat "for ... in ...". "For all elements in set", "for all items in list", "for all [key, value] pairs in dict", etc.
This might suggest using "all", but that too is vague, and it also may suggest eagerness or completeness. But iteration is needed in JS precisely for laziness.
Infinite sequences or streams where the consumer decides when to stop asking for the next value are currently underserved use-cases. This point came up when reviewing
Waldemar raised objections against the current Proxy
API to proxy objects with a large number of properties. The problematic traps are
fix and
enumerate. W.r.t
enumerate, a proxy could return a proxy for an array. Additionally,
enumerate
should be modified as soon as there is a solid proposal for
generators/iterators. Proxies for large objects could resist being
fixed. This solution is satisfactory as long as no part of the spec
depends on an object being non-extensible/sealed/frozen.
Of course this does not say what the syntax for a meta-programmable iteration construct should be, but laziness suggests "all" is not precisely on target.
/be
_______________________________________________
es-discuss mailing list
es-discuss@...
https://mail.mozilla.org/listinfo/es-discuss