Le 12 juin 2013 à 20:46, Andreas Rossberg <[email protected]> a écrit :
> On 12 June 2013 19:51, Brendan Eich <[email protected]> wrote: >> The @iterator part of the iteration protocol is not about coercion or types >> at all. It is a "pattern" for getting or creating a usable iterator from an >> object. > > You are entitled to call it what you think is best, of course, but in > the current state of affairs, implicit coercion is the only thing > @iterator actually gives you. Simple test: if you removed it from the > picture (in favour of for-of just accepting iterators) that would be > the only thing you'd lose. Given that: * an iterator can be used in only one for/of loop; * an iterable (by which I mean primarily, an iterable non-iterator) can typically be reused in other for/of loops, including nested ones; when I write `for (item of mySet)`, I consider that what I've written on the RHS of the 'of' keyword is definitely a (non-iterator) *iterable*—since I can reuse it two lines below—, and not something coerced to an *iterator*—that I couldn't reuse. Therefore, I think that "For/of coerces its argument to an iterator" is a wrong mental model, and "For/of accepts either a reusable iterable or a disposable iterator" is a better one. And the implicit invocation of `@@iterator` is better thought as Get-the-snark-I-need-for-doing-my-work, than as Coerce-to-a-disposable-object. (And the fact that iterators are also non-reusable iterables is an implementation detail that don't disturb my mental model, because I don't care, thanks to generators.) —Claude _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

