On Aug 31, 2013, at 3:19 PM, Brendan Eich wrote:

> Brian Kardell wrote:
>> 
>> Fwiw, just bikesheddingly speaking I actually prefer the *.
>> 
> 
> Let's review. Three reasons for function* syntax:
> 
> 1. Opt-in required for backward-incompatible definition of 'yield' as 
> low-precedence unary prefix operator.
> 
> 2. Zero-yield (no yield in body) basis case, useful for delegation via yield* 
> from another generator.
> 
> 3. Decorator to alert the reader that the body contains yield (ignoring 2 for 
> a moment) reason.
> 
> You are "bikesheddingly" supporting 3, I take it. Can you say more about why 
> you want a decorator for human readers? Again ignoring 2, which makes the 
> case based on what the JS engine must see, a more "objective" criterion in 
> this case (and, in a different light, in case 1).

I think there is more to #3. The body of a GeneratorFunction has quite 
different semantics than that of a regular function. This is particularly clear 
when you think about GFs as actually being constructors/factories.  The body of 
a normal constructor/factory defines what happens before a new instance object 
is returned to a caller.  The body of a GeneratorFunction defines the future  
behavior of the instance object that is returned to the caller.  A regular 
Function's body is evaluated before it's call returns.  A GeneratorFunction's 
body is evaluated sometime after its call returns.  This is a critical 
difference that must to known to a code reader in order to understand any code 
that includes a GeneratorFunction definition and is more that sufficient to 
warrant the * sigil.   Personally, I would prefer an even stronger marker, such 
as a different keyword, but * is adequate.  Programming language need to be 
designed for people. Inferring which functions are GeneratorFunctio
 n by the presences of yield may be fine for compilers but it isn't good enough 
for human readers or writiers.

Allen
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to