François REMY <mailto:fremycompany_...@yahoo.fr>
January 21, 2012 1:00 PM
-----Message d'origine----- From: Brendan Eich
> François REMY <mailto:fremycompany_...@yahoo.fr>
> January 21, 2012 1:34 AM
> About the 'fn' proposal, I'm happy with it. Asking a 'use' statement > just for that feature may prove a little excessive but if it can be > merged with other can-be-breaking syntax reforms ('use es6')

Please read the notes from the tc39 meeting, and the recent threads. We are not requiring version opt-in. New syntax is its own opt-in.

The problem here is that 'fn' is not "new syntax" without complex parsing hacks. It's an unreserved identifier in ES1-5.

If it's the case, we should avoid that. Avoiding 'use' for the whole syntax and requiring it just for 'fn' is weird.

"Weird" doesn't quite dismiss the idea, since JS has 'function' and a shorthand for it -- along with a crucial new production adding an expression-bodied alternative short-function-expression -- is something users keep requesting. If the goal is to shorten 'function' yet keep a mnemonic shorter prefix, nothing grawlix will do. Why not 'fn'?

But I understand we can't use 'fn' per se since it breaks compat. We should try to find something else (it's possible, at least).

Some here are positive on 'fn'. We have been searching for usable shorter syntax for a while. We should not dismiss 'fn' so quickly.

> why not. But, seriously, what really makes it impossible to use # or @?

We've been over this already. # is for freezing, @ is for private names. The Matlab precedent of @ for function is quite weak (thanks for pointing it out).

Yes, but you didn't respond about where @ is used in private name, and why it makes the @() syntax ambiguous with that use.

You have to follow the strawmen that haven't made it, in particular

http://wiki.ecmascript.org/doku.php?id=strawman:instance_variables

and

http://wiki.ecmascript.org/doku.php?id=strawman:classes_with_trait_composition&rev=1305852025#private_state

and es-discuss threads about foo@bar vs. foo.@bar, just @bar for this-relative addressing, etc.

Since the @ is never used in the private name proposal, I can't check that on my own. My guess is that they don't collide.

They collide conceptually by overloading @ for two quite different things.

If we want shorter *named* function expression syntax, then they collide syntactically with a fatal ambiguity absent more restricted productions:

  @foo(bar)
  { expr; }

Is this an @-function-expression or a call to private this-relative foo passing bar?

Anyway, there are still other chars left, we should check if they are easy to type on various keyboards (on my keyboard they are): ['6', '~', 'µ', '£'].

Please re-read the recent messages on this thread: no non-ASCII. Also, ~ is in JS already!

/be
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to