Block lambda is cool, its syntax isn't

Brendan Eich brendan at mozilla.org
Fri Jan 20 20:31:42 PST 2012


> Jorge <mailto:jorge at jorgechamorro.com>
> January 20, 2012 7:15 PM
>
> Sorry, I don't follow, with "that" you mean "something else" or "the 
> acute accent" ?

Oh, not ' but the diacritical on é, you mean?

How do I type that on a US or UK keyboard? We are not going to use 
non-ASCII characters, so you are still barking up the wrong tree.

/be

> str = ´agudo´
> Error
> • message: "Invalid character '\u0180'"
> Brendan Eich <mailto:brendan at mozilla.org>
> January 20, 2012 6:59 PM
>> Jorge <mailto:jorge at jorgechamorro.com>
>> January 20, 2012 6:46 PM
>>
>>
>>
>> 1.- There are not quasi literals in the language yet
>
> No, quasi-literals are approved for ES6. Already.
>
>> 2.- quasi literals could as well use something else (the acute accent 
>> ?) instead
>
> No, that is used for string literals, since JS1 in 1995!
>
>> 3.- a shorter function syntax is almost at the top in the 
>> programmers' wish list for ES.next (unlike quasis)
>
> So what? No one except you is asking for ` and quasis won. Please 
> adjust your expecations accordingly.
>>
>> Isn't it -perhaps- too soon to reject ` for functions in favor of 
>> quasis ?
>
> No.
>
> /be
>
> Jorge <mailto:jorge at jorgechamorro.com>
> January 20, 2012 1:22 AM
>
> Has a backtick/accent grave ever been considered and/or rejected ?
>
> Anonymous function expression:
>
> setTimeout( '(){ ... }, 1e3);
>
> Named function expression:
>
> setTimeout( 'name(){ ... }, 1e3);
>
> Declarations:
>
> `(){ ... } // error: can't declare anonymous functions
>
> `name(){ ... }
> Brendan Eich <mailto:brendan at mozilla.com>
> January 19, 2012 11:27 AM
> Axel Rauschmayer <mailto:axel at rauschma.de>
> 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
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
> Axel Rauschmayer <mailto:axel at rauschma.de>
> 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.
>
> -- 
> Dr. Axel Rauschmayer
> axel at rauschma.de <mailto:axel at rauschma.de>
>
> home: rauschma.de <http://rauschma.de>
> twitter: twitter.com/rauschma <http://twitter.com/rauschma>
> blog: 2ality.com <http://2ality.com>
>


More information about the es-discuss mailing list