Brendan Eich (2013-07-26T16:35:24.000Z)
Domenic Denicola wrote:
> From: Brendan Eich [brendan at mozilla.com]
>
>> I proposed arrow functions and championed them into ES6. As the strawman history shows, eliding () and {} were both supported at first:
>
> Right, I remember `{}` being optional at least; in fact the genesis of this thread was me working with Traceur this morning and getting complaints when I tried `() =>`. I certainly don't blame you for making them mandatory to gain consensus! It was hard enough to get arrow functions through.

I'm not worried about blame (*I* blame me on this :-P), but there's a 
lesson here. Not everyone can swallow CoffeeScript as solid and 
*long-standing* precedent. Too few even know it on TC39, but that's not 
just a criticism of TC39ers -- it cuts both ways since CoffeeScript is 
not old or widely studied compared to other languages. More below.

> I started this thread hoping we could get some reconsideration, now that arrow functions have been a consensus reality for so long that it's hard to imagine ES6 without them. I find it especially baffling that there's such a negative reaction given the time-tested nature of optional `()`/`{}` in CoffeeScript.

Optional parameter list is an easier sell since => is very unlikely to 
start a statement, while => may well end one and lack of semicolon means 
that the statement continues. This is the "lack of ASI where I expected 
it" hazard I mentioned in reply to Oliver.

But again, "time-tested" and CoffeeScript make some of us old-timers 
laugh. FTR, I like CoffeeScript and Jeremy was kind enough to let me 
co-present at JSConf 2011 in Portland. However, it is young.

One company I advise tried it, and found that its "unsyntax" bit back in 
this way: code that compiled and seemed to do one thing did something 
quite different. This happens with JS due to ASI; it also happens just 
due to the C syntax heritage. But it happens more often with 
CoffeeScript, from what I hear.

/be
domenic at domenicdenicola.com (2013-07-26T21:12:58.582Z)
Domenic Denicola wrote:
> From: Brendan Eich [brendan at mozilla.com]
>
>> I proposed arrow functions and championed them into ES6. As the strawman history shows, eliding () and {} were both supported at first:
>
> Right, I remember `{}` being optional at least; in fact the genesis of this thread was me working with Traceur this morning and getting complaints when I tried `() =>`. I certainly don't blame you for making them mandatory to gain consensus! It was hard enough to get arrow functions through.

I'm not worried about blame (*I* blame me on this :-P), but there's a 
lesson here. Not everyone can swallow CoffeeScript as solid and 
*long-standing* precedent. Too few even know it on TC39, but that's not 
just a criticism of TC39ers -- it cuts both ways since CoffeeScript is 
not old or widely studied compared to other languages. More below.

> I started this thread hoping we could get some reconsideration, now that arrow functions have been a consensus reality for so long that it's hard to imagine ES6 without them. I find it especially baffling that there's such a negative reaction given the time-tested nature of optional `()`/`{}` in CoffeeScript.

Optional parameter list is an easier sell since `=>` is very unlikely to start a statement, while `=>` may well end one and lack of semicolon means that the statement continues. This is the "lack of ASI where I expected 
it" hazard I mentioned in reply to Oliver.

But again, "time-tested" and CoffeeScript make some of us old-timers 
laugh. FTR, I like CoffeeScript and Jeremy was kind enough to let me 
co-present at JSConf 2011 in Portland. However, it is young.

One company I advise tried it, and found that its "unsyntax" bit back in 
this way: code that compiled and seemed to do one thing did something 
quite different. This happens with JS due to ASI; it also happens just 
due to the C syntax heritage. But it happens more often with 
CoffeeScript, from what I hear.