On Jul 24, 2010, at 11:51 AM, Mark S. Miller wrote:

> On Fri, Jul 23, 2010 at 10:37 AM, Oliver Hunt <[email protected]> wrote:
> 
> On Jul 23, 2010, at 10:32 AM, Brendan Eich wrote:
> 
> > On Jul 23, 2010, at 10:27 AM, Oliver Hunt wrote:
> >
> > [Good point about LL(∞) snipped.]
> >
> >> *  To give you an idea of how important parsing is, the 280 North folk 
> >> once told me that parsing made up 25% of the load time for 280 Slides.
> >
> > Ollie, was that with browser-side Objective-J compilation, or with the 
> > server translating and feeding the Obj-J-lowered-to-JS code to the browser?
> 
> I believe it was with the browser being passed preprocessed source, but i'll 
> harass them to find out.
> 
> > I have polled audiences at talks in the last year about shorter function 
> > syntax, see first two links at http://brendaneich.com/presentations/. 
> > Results mainly for fun but somewhat informative (to me at any rate) were 
> > not resoundingly in favor of a new and much shorter keyword to use instead 
> > of function.
> >
> > This was before 
> > http://wiki.ecmascript.org/doku.php?id=strawman:shorter_function_syntax was 
> > proposed, so I didn't ask the audiences to clap for its # syntax.
> >
> > People like the expression-closure idea, although syntax needs to be 
> > hammered out. See 
> > https://developer.mozilla.org/en/new_in_javascript_1.8#Expression_closures_%28Merge_into_own_page.2fsection%29
> 
> I personally am not too fussed about the reduced typing -- if people really 
> wanted reduced typing we could simply adopt "\" which seems to be the common 
> symbol used for a function.
> 
> The reason I prefer "#" to "\" is simply that JavaScript source text 
> [fragments] frequently appear in literal strings. Right now, the only quoting 
> hazard this introduced is quotes and backslashes in nested literal strings. 
> (Is this true?). If you use backslash in syntax elsewhere in the language, 
> then it becomes an additional quoting hazard that's easy to miss.
> 
> +1 on "#".

Good point about the escaping hazard. I think # may look funny to people 
because it is a "noisy" symbol and also because it is a comment delimiter in 
many languages. Two other characters totally disallowed in the syntax are @ and 
`, I wonder if either of those would be more visually pleasing:

[0, 1, 2, 3].map( #(x) {x * x} )
[0, 1, 2, 3].map( `(x) {x * x} )
[0, 1, 2, 3].map( @(x) {x * x} )

I also wonder if using a strictly binary operator might be workable without 
creating syntax ambiguities:

[0, 1, 2, 3].map( ^(x) {x * x} )
[0, 1, 2, 3].map( *(x) {x * x} )
[0, 1, 2, 3].map( %(x) {x * x} )


I kind of like ` but it may be too visually subtle and may be confusing to lisp 
users. @ seems less visually harsh than #. I like ^ for resemblance to lambda, 
overall visual weight, and alignment with Apple's "blocks" extension to C[1]. I 
have a vague memory that we discussed ^ before and discarded it, but I can't 
find that discussion in the archives at the moment.

Perhaps the strawman page for shorter function syntax should list reasons for 
rejecting other syntax options. I would be happy to document the reasons 
against fn, fun, f and \, but I can't seem to remember my username and password 
(I'm not even sure if I have an account). Who can help with wiki access issues?

Regards,
Maciej

[1] http://en.wikipedia.org/wiki/Blocks_(C_language_extension)

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to