Re: The ES6 iteration protocol

2015-04-06 Thread Dmitry Soshnikov
I guess all built-in iterators return themselves for `Symbol.iterator` protocol. So they are all singletons. I described in detail where confusion/substitution of concepts happens in that analysis in the recent two comments. Dmitry On Mon, Apr 6, 2015 at 1:07 PM, joe joe...@gmail.com wrote:

Re: The ES6 iteration protocol

2015-04-06 Thread joe
Regardless of what the spec says, you cannot avoid singleton iterators in real-world code. In my opinion, the spec should refrain from specifying when object creation happens within the iteration protocol, wait for the relevant code and contract patterns to develop and then include something in

Re: The ES6 iteration protocol

2015-04-06 Thread Allen Wirfs-Brock
On Apr 6, 2015, at 2:23 PM, Dmitry Soshnikov dmitry.soshni...@gmail.com wrote: I guess all built-in iterators return themselves for `Symbol.iterator` protocol. So they are all singletons. I described in detail where confusion/substitution of concepts happens in that analysis in the

Re: The ES6 iteration protocol

2015-04-06 Thread Brendan Eich
Axel Rauschmayer wrote: There are two different aspects: 1. If you get an iterable, it sometimes matters whether iteration restarts when you ask the iterable for an iterator. Rather, if you have an object o and o[Symbol.iterator]() === o then you have an iterator. 2. Self-iterability is

Re: The ES6 iteration protocol

2015-04-06 Thread Dmitry Soshnikov
Exactly, that's what I tried to explain. Since in one case it considers just an iterable (an array), and in other case -- an iterator (which is by coincidence is also an iterable). But an array's iterator is an iterable as well, and also always returns itself for iterator protocol. Yeah, the

Re: The ES6 iteration protocol

2015-04-06 Thread Axel Rauschmayer
There are two different aspects: 1. If you get an iterable, it sometimes matters whether iteration restarts when you ask the iterable for an iterator. 2. Self-iterability is how iterators turn themselves into iterables so that constructs that work with iterables can be used. It also enables

Re: The ES6 iteration protocol

2015-03-29 Thread Dmitry Soshnikov
Good write up, although fresh vs singleton topic doesn't make sense, and doesn't reflect the spec. I responded on the gist. Dmitry On Sat, Mar 28, 2015 at 4:41 AM, Axel Rauschmayer a...@rauschma.de wrote: FWIW: I have written down my understanding of the ES6 iteration protocol (shaped by