FTR: With block lambdas and object literal extensions, I wouldn’t want/need a function shorthand. I thought I had seen an opportunity for a more compact syntax (if and only if function shorthands are needed), but was wrong. Sorry.
Suggestion: a community-edited page where we collect the rejected syntaxes (=> less running in circles) – simply copying emails (such as yours below) there would probably suffice. On Jan 19, 2012, at 20:27 , Brendan Eich wrote: > Axel Rauschmayer <mailto:[email protected]> > January 19, 2012 9:31 AM > > Rationale: wouldn’t freezing by default be OK for 98% of the cases? If you > want anything else, you can use a traditional function. Then the above syntax > as the only function shorthand would be OK. > > > First, #(params) { body } was proposed by Arv and Alex: > > http://wiki.ecmascript.org/doku.php?id=strawman:shorter_function_syntax > > Arv and Alex feel strongly that the shorter function syntax (anything > shortening 'function' syntax) must not freeze by default. > > There was lack of clarity about whether completion value as implicit return > value was part of the proposal. If so, controvery, since there is a > completion value leak hazard. TC39 seems to agree the solution there is > something with different look & feel, such as block-lambdas. > > But, making a one-char grawlix shorthand for 'function' while still requiring > 'return' is not considered enough of a shorthand. A possible cure here is to > support an alternative body syntax: #(params) expr. However, this inverts > precedence if done naively. It also runs into trouble trying to prefer an > object literal over a block statement. I've worked on both of these in the > context of > > http://wiki.ecmascript.org/doku.php?id=strawman:arrow_function_syntax > > This superseded shorter_function_syntax, but ran into grammatical issues that > have vexed it. > > But notice that throughout this, no one advancing a proposal advocated > freezing by default. JS developers use function objects as mutable objects. > Not just to set .prototype, also to decorate with ad-hoc and meta-data > properties. Freezing is not wanted by default. > > I agree that for block-lambdas it's easier to say "freeze by default". For > merely "shorter function syntax", no. Functions are mutable objects by > default in JS. This matters for minifiers, which may not be able to see all > the mutations but would love to use shorter syntax for 'function' syntax, > blindly. > > /be > -- Dr. Axel Rauschmayer [email protected] home: rauschma.de twitter: twitter.com/rauschma blog: 2ality.com
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

