Sorry about that, I think I'm unconsciously substituting "return value of .next" for ".next.value." I am talking about reusing the return object, yes; for some reason in my head, "return object of .next" refers to .next(), while "return value of .next" refers to .next().value. Communication error on my part.
On Sun, Feb 15, 2015 at 8:19 AM, Benjamin (Inglor) Gruenbaum < [email protected]> wrote: > Joe, I don't think we're having the same discussion. > > Again, this is about the issue Katelyn raised about the return value of > `.next`. > > Katelyn suggested that the return value of a `.next` call in the iteration > protocol - an object of the form `{value: value, done: boolean}` should be > allowed to be reused between calls - so an iterator can return _the same_ > object without allocating a new one. > > I argue (and from what I understand Kevin agrees with me) that allowing > this is error prone and might cause surprises for developers since they > have an object returned that has mutated implicitly without the consumer > being aware. We can have the same performance gain by a clever engine that > figures this sort of thing out itself. > > > On Sun, Feb 15, 2015 at 4:13 PM, joe <[email protected]> wrote: > >> Again, where does this mutation occur? The spec shouldn't allow any such >> thing to begin with; it should mandate exactly what my compiler does: as >> soon as .next returns, copy .value into the loop variable. The developer >> shouldn't have any access to the return value from within the loop at all; >> if he does, that should (ideally) be considered a violation of the standard. >> >> On Sun, Feb 15, 2015 at 8:09 AM, Kevin Smith <[email protected]> >> wrote: >> >>> When I can get more sound abstractions for no additional cost >>>> (eventually) I'd rather not introduce implicit mutable state into the >>>> application. Developers won't be aware of it being mutating and the whole >>>> notion of a mutating-at-a-later-point return value is very error-prone in >>>> my opinion. >>>> >>> >>> Right. Mutating the returned object isn't really tenable from a >>> usability point of view. >>> >>> >>> _______________________________________________ >>> es-discuss mailing list >>> [email protected] >>> https://mail.mozilla.org/listinfo/es-discuss >>> >>> >> >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

