return when desugaring to closures
Mark S. Miller
erights at google.com
Sat Oct 11 13:21:40 PDT 2008
On Sat, Oct 11, 2008 at 12:52 PM, Peter Michaux <petermichaux at gmail.com> wrote:
>> Use let (the var replacement declaration form).
>
> Sounds good to me but it is a little confusing to keep track if "let"
> is either in or out of ES-Harmony and if it is partly in then which of
> the several JavaScript 1.7 uses are in and if there will be "let",
> "let*", "letrec" semantics.
The let declaration is in. Like const and function declarations, it
has block-level letrec lexical scoping. I continue to oppose let
expressions and let statements, as they don't provide enough
additional power to justify their cost. For example, if lambda
supports optional args, as I think we all agree it should, then,
adapting a suggestion of Lars, we should define the scope in which the
default value expressions are evaluated so that
var x = 2;
(lambda (x = 3, y = x) (x+y))()
returns 5, not 6. This gives us an easy enough let. The builtin let
declarations provide an easy letrec. Given these, no one will miss
let*.
--
Cheers,
--MarkM
More information about the Es-discuss
mailing list