The ES6 iteration protocol

Axel Rauschmayer axel at rauschma.de
Mon Apr 6 21:41:13 UTC 2015


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 generators to play two roles: generator methods can implement `[Symbol.iterator]` and generator functions can implement iterable-returning functions.

In this particular case, I’m interested in #1. I probably have to come up with a better term for it.



> On 06 Apr 2015, at 23:30, Dmitry Soshnikov <dmitry.soshnikov at gmail.com> wrote:
> 
> 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 "self-iterable" makes much more sense in this case.
> 
> Dmitry
> 
> On Monday, April 6, 2015, Allen Wirfs-Brock <allen at wirfs-brock.com <mailto:allen at wirfs-brock.com>> wrote:
> 
> > On Apr 6, 2015, at 2:23 PM, Dmitry Soshnikov <dmitry.soshnikov at gmail.com <javascript:;>> 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 recent two comments.
> >
> 
> I don’t think “singleton” is the correct term for the concept that Axel is trying to describe.  A “singleton” is normally an kind of object for which there is only a single instances.  There may be many instances of, for example %ArrayIterator%, so it isn’t correct to call %ArrayIterator% a singleton
> 
> What Axel is describing might be characterized as “self iterable”, it returns itself when recieving a Symbol.iterator request.
> 
> Allen
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

-- 
Dr. Axel Rauschmayer
axel at rauschma.de
rauschma.de



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20150406/d362d969/attachment.html>


More information about the es-discuss mailing list