Hi Brendan,
There's a lesser goal I didn't list: make function syntax thinner.
'function' is eight whole letters, plus four chars of parens and braces,
plus 'return'. Wherefore expression closures in JS1.8 -- they save the
braces and 'return' overhead. But to fix expression closures to be
bottom-up unambiguous we would require at least parens around the
body-expression.
Allow "fun" as a shorthand for "function" similar to "var" being a
shorthand for "variable", and you can add back the parentheses and still
make a saving:
fun(n) (n + 1)
Actually I think it's a great idea to allow function bodies to be
expressions when wrapped in parentheses and blocks when wrapped in
braces. It's obvious and consistent with other syntax.
More concise function syntax is not a goal solely, or even exclusively,
to support user-defined control abstractions. It's a good in its own
right unless you consider every use of a function expression in JS today
to be a control abstraction in the Smalltalk block sense (I do not).
Concise syntax is good. When I look at these:
function ident(args) { body ; return }
function ident(args) ( expression )
the only way it can be made more concise is by shrinking the "function"
keyword. The ident is already optional, as are the args, the return is
no burden given that the body is already there, and functions with no
body can use expression form instead.
I don't think that you can get much more concise than this without
fundamentally changing the nature of JavaScript and its syntax:
fun(x) {x(1)}
fun(x) (x + 1)
Adding "fun" to millions of scripts all over the world could also have a
powerful subliminal effect on JavaScript programmers, as compared with
the way that the "die" command ushered in the extinction of Perl :)
Cheers,
Michael
--
Print XML with Prince!
http://www.princexml.com
_______________________________________________
Es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss