optional "function" keyword

Brendan Eich brendan at mozilla.org
Thu Mar 8 10:22:53 PST 2012


Aymeric Vitte wrote:
> Indeed it looks more intuitive than block lambdas (IMHO).

Intuitions vary, but why does

function huh(a, b) {
   let toss = () do{return a*b};
   downward(toss);
   return 42;
}

where downward, if it calls its argument, forces a return of a*b from 
huh, and control never reaches the return 42, seem "intuitive" to you? 
Does the () do ... syntax by itself convey a "Tennent sequel"?

Block-lambdas have precedent, intuitive or not, going back to Smalltalk 
via Ruby, of behaving in this different and (to some) surprising way. 
They look odd enough to better call attention to the novelty, in my 
opinion, than a mix of () and do.

function huh(a, b) {
   let lambda = {|| return a*b};
   downward(toss);
   return 42;
}


Anyway, the current proposal has grammatical issues already plaguing 
arrow function syntax. Block-lambdas have no such problems. But this is 
not a contest: we could have shorter function syntax (e.g., 'fn' if not 
some prefix-less proposal that solves the grammar problems). And we 
could have block-lambdas on top.

What we won't have is full TCP in a function-body-plan. Sufficiently 
distinct semantics need markedly different syntax. Is '()do' 
freaky-deaky enough? I don't think so, right now.

/be


More information about the es-discuss mailing list