Standard @iter module unfriendly to collection builders
Allen Wirfs-Brock
allen at wirfs-brock.com
Mon Nov 14 09:07:39 PST 2011
On Nov 12, 2011, at 12:05 PM, Brendan Eich wrote:
> On Nov 12, 2011, at 11:26 AM, Allen Wirfs-Brock wrote:
>
>> The Iterators proposal includes the definition (http://wiki.ecmascript.org/doku.php?id=harmony:iterators#standard_api ) of functions that are intended to support various common iteration patterns.
>>
>> For example,
>>
>> for ((k of keys(x)) { ...}
>> for (v of values(x)) { ...}
>> for ([k,v] of items(x)) {...}
>> for (k of allKeys(x)) { ...}
>> for (k of allValues(x)) { ...}
>> for (i of allItems(x)) { ...}
>>
>> The use of these functions seems to be pretty much an essential part of the intended use of the for-of statement.
>
> The prior question is what, if anything,
>
> for (x of y) ... // and [x for x of y], etc.
>
> means.
>
> Should it throw if there's no @iterator private-named property in y *and* y is not a Proxy with an iterate trap? That is our current thinking. It may not be reflected well in the wiki.
Another possibility would be to build in default @iterator methods on Object.prototype and Array.prototype. I'd probably make the object implementation be an items for enumerable properties and the array implementation iterate the values of 0..length-1 .
>
> The alternative is to iterate over property values of an object denoted y that has no unstratified @iterator or stratified handler iterate trap. But that is hostile to collections and your [] proposal.
Property values (without key identification) doesn't sounds that generally useful.
>
> OTOH I see no problem for collection writers if we make for-of throw on untrapped objects. Collection authors would bind @iterator, @elementGet, and @elementSet. Life would be grand. Right?
Yes, suspect that people defining collections would routinely want to over-ride @iterator. However, the defaults probably do establish some expectations. Particularly if we aren't providing many (any?) built-in collections that might establish other expectations.
allen
>
> /be
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20111114/6b7fcf23/attachment.html>
More information about the es-discuss
mailing list