if (a)->x is going to be a function that doesn't capture 'this', I'd
prefer (a)+>x for capturing 'this'.  they're visually distinct,
somewhat mnemonic, about equally easy/hard to type.

On Tue, May 10, 2011 at 17:44, Brendan Eich <[email protected]> wrote:
> On May 10, 2011, at 4:27 PM, Isaac Schlueter wrote:
>
>> On Tue, May 10, 2011 at 16:22, Oliver Hunt <[email protected]> wrote:
>>> \ is a much more common lambda symbol in many languages, and i'm not sure 
>>> what the ambiguity would be in \{...} or \(...){...}.
>>
>> \(a,b,c) { a + b * c }
>>
>> That's cute.
>
> Oliver still has a crush on Haskell.
>
> I've mooted \ along with ƒ, etc. for a while. \ is bad for readability 
> because it's visually light, but worse, if we want named function expression 
> shorthand, then \u10A0(){} is a valid Unicode-identifier-char-named function 
> expression.
>
> Last time we talked about \ in TC39 for shorter function syntax it died hard, 
> IIRC.
>
>
>>> I'm also really not happy with the concept of minor variances in syntax 
>>> having such dramatic impact the language semantics.  All the fiddling with 
>>> |this| dramatically increases the complexity of the language, it doesn't 
>>> simplify it.
>>
>> I completely agree.  It think any short-form function syntax should
>> have the exact same semantics as the existing long-form.  We've got
>> .bind(obj).  That's enough.
>
> No, there are more efficient ways to implement something with dedicated 
> syntax, such as CoffeeScript's =>, and it comes up enough that '.bind(this)', 
> ignoring optimization difficulty, is too much.
>
> The long-standing way to code lexical this is 'var self = this; ... function 
> (...) {... self ... }'. That won't go away, but it is also crying for a 
> shorthand.
>
> What makes 'var self = this;' particularly bad is when the inner function is 
> named, and all its calls are via that unqualified name.
>
> In such a scenario, ES5 strict's rule of binding |this| to undefined just 
> wastes the |this| parameter, and requires 'var self = this' or '.bind(this)' 
> as heavyweight workarounds.
>
> /be
>
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to