David Bruant (2013-09-06T15:59:12.000Z)
Le 06/09/2013 17:39, Brendan Eich a écrit :
> Brandon Benvie wrote:
>> I don't think you're missing anything. They seem to be more 
>> accurately described as Iterator Expressions than Generator 
>> Expressions. It might be interesting if you could use yield inside 
>> them, which would then make sending a value in useful. But without 
>> that they don't expose any generator interface externally. 
>
> They could be called something else, for sure. The name works because 
> they're sugar for a generator function immeidately invoked:
>
> (for (x of [1,2, 3])  x * x)
>
> is
>
> (function*() { for (let x of [1,2, 3])  yield x * x; })()
There is also a non-generator desugaring (exercise left to the reader).

> The name also may have Python roots that predate Python 2.5's more 
> complete (send as well as next; throw; close) generator interface.
>
> I think we should keep the name, because it's more precise. Iterator 
> expression could be taken to mean other things a bit too easily.
I don't really care for the name, but I agree with Domenic that there is 
no need for the expression to create a generator.
The presence of .next and .throw will be unnecessarily confusing to authors.

David
domenic at domenicdenicola.com (2013-09-17T19:57:46.157Z)
Le 06/09/2013 17:39, Brendan Eich a écrit :
> They could be called something else, for sure. The name works because 
> they're sugar for a generator function immeidately invoked:

There is also a non-generator desugaring (exercise left to the reader).

> The name also may have Python roots that predate Python 2.5's more 
> complete (send as well as next; throw; close) generator interface.
>
> I think we should keep the name, because it's more precise. Iterator 
> expression could be taken to mean other things a bit too easily.

I don't really care for the name, but I agree with Domenic that there is 
no need for the expression to create a generator.
The presence of `.next` and `.throw` will be unnecessarily confusing to authors.