On Dec 5, 2008, at 12:49 PM, Allen Wirfs-Brock wrote:

From: Brendan Eich [mailto:[EMAIL PROTECTED]

The return hazard exists in Smalltalk too. What's different here that
makes you choose differently? Of course, there are more choices than
Tennent-to-the-max lambdas or-else classes-as-sugar.

The difference is in the foundation language we are starting with. Because of the central role of c-style syntactic control constructs in JavaScript it is unlikely that lambda-based control abstractions will ever be as important in JavaScript as they are in Smalltalk.

Agreed so far. The long-term plan here would be macros. Post-Harmony at this point.


[snip] If it is necessary to make a choice I'm inclined to prioritize enhancing object literals to make them be a better object/class abstraction mechanisms over enhancing lambdas to make them a better control abstraction mechanism.

I question the need to make a choice (yet).

I'm actually concerned about usability of lambdas as anything similar to functions. Say they're added, and they prove popular for control abstractions and other purposes, including "better functions". Then not only will completion-value leaks bite people -- misplaced return probably will too, if "better functions" involves porting existing code from function to lambda.

This is all speculation, but here's my non-speculative claim: lambda syntax should not look so much like function syntax if return within the body behaves completely differently. We would want syntax very different from function (i.e., not lambda (args) {body} -- sorry, Peter Michaux). Or else we should revisit the wisdom of applying TCP to lambdas.

[Smalltalk observations snipped -- thanks for those, they make sense but I want to keep pushing on what doesn't work in the current strawman: wiki space.]

Don't get me wrong, I like the semantics of break/continue/return that have been proposed for JavaScript lambdas but given our legacy I can see the return hazard being a real problem.

I agree if lambda looks like function or is sold as a "better function". If it looks more like a block, or something else, that might mitigate the return hazard. Michael Day wondered if we confined the body to an expression language -- that would eliminate the return hazard.


And if it is a choice between enhanced object literals and control abstracting lambdas I'd probably go with the object literals.

No false dilemmas yet, please!

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

Reply via email to