[parenscript-devel] Lexical scoping with LAMBDA

sblist at me.com sblist at me.com
Tue Sep 6 21:48:01 UTC 2011


It appears as though there might be a gap in the lexical scoping
implementation in the compiler:

(ps (lambda (x) 
      (let ((x 1))
        (foo x))
      (incf x)))
=>
"function (x) {
    var x = 1;
    foo(x);
    return ++x;
};"

vs.

(ps (let ((x 10))
      (let ((x 1))
        (foo x))
      (incf x)))

"var x = 10;
var x33 = 1;
foo(x33);
++x;"

Although function parameters have their own lexical bindings,
the environment still needs to be informed of those bindings
so that LET forms in the function body can rename any conflicts.

	Scott




More information about the parenscript-devel mailing list