Retrieving generator references
Brendan Eich
brendan at mozilla.org
Sat Nov 22 20:03:28 PST 2014
Axel Rauschmayer wrote:
> As an aside, I still feel that two concerns are mixed in a generator
> function:
>
> * The creation of the generator object. This is where the generator
> function is like a constructor and where you’d expect `this` to refer
> to the generator object.
Nope, not a constructor (and if you don't call with 'new', what is
'this', pray tell?).
> * The behavior. This is where the generator function is like a real
> function.
>
> A result of this mixing of concerns is that using `next()` to start a
> generator feels slightly off and that the argument of that first
> `next()` invocation is completely ignored.
We've discussed a special generator head form to declare that name, but
not for ES6. For now it's Pythonic, except we decided not to throw if
the initial .next call passes a non-undefined value.
> Alas, I have no idea how to disentangle these concerns, but it would
> be nice if we were able to.
We're not changing generators at this point, but Nicholas's request for
a way to reference the running generator-iterator instance is worth
discussing more. It can't and shouldn't be 'this'. Does it violate POLA
to provide (via another special form) for all generators? Users can
provide their own bindings as noted, so is it a big problem?
I think the task.js reference, and ES7 async/await, point to a better
direction: use helpers (libraries now, syntax soon) to automate harder
and avoid the need for the "me" reference.
/be
More information about the es-discuss
mailing list