On 13 May 2013 17:58, Allen Wirfs-Brock <[email protected]> wrote:
> Every other place in the language (syntax and built-in functions) where we 
> expect Iterables we transparently accept either iterator or generator 
> objects.  Why should yield* be any different.

Generators are subtypes of iterators, but not the other way round. So
it is to be expected that there are contexts where you can use the
latter but not the former. And 'yield' is quite naturally a feature of
generators.


> However, there is another alternative to close that addresses the finally 
> issue.  I can make it statically illegal for a "yield" statement to be nested 
> within a block that is protected by a "finally".  This preserve the integrity 
> of "finally" which is my only concern.  It also address the for-of early exit 
> issues. This restriction is trivial to specify (and should be only slightly 
> less trivial to implement). Since I don't currently have "close" in the spec. 
>  I probably should have done this anyway.

Yes, we had the same discussion in the V8 team the other week. It's a
reasonable restriction, but it's also an ad-hoc restriction, which I'm
personally not overly fond of. Moreover, there might be use cases
where you control both definition and consumption of a generator, so
that using finally might be safe and sensible. (On the other hand,
there aren't really many meaningful use cases for finally to start
with, so I don't worry too much about that.)

In short, I could live with that, but don't think it's necessary.

/Andreas
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to