[parenscript-devel] Bug: macroexpansion broken by lexical scoping change

Vladimir Sedach vsedach at gmail.com
Sat May 9 23:29:41 UTC 2009


Just pushed out a patch that fixes this. The solution turned out to be
a lot more involved than I originally suspected - basically the PS
compiler had to be refactored to give control of macroexpansion over
to special forms (the way it was previously handling macroexpansion
was quite naive, but would have been suitable for a single-namespace
Lisp).

The changes that have been going on in the recent while are starting
to make Parenscript almost look like a "real Lisp compiler."

Vladimir

On Wed, May 6, 2009 at 2:00 PM, Daniel Gackle <danielgackle at gmail.com> wrote:
> Here's one thing that the latest PS breaks in our code.
>
> (ps (list 1 2 3))
> =>
> "[1,2,3];"
>
> (ps (let ((list nil))
>           (setf list (list 1 2 3))))
> =>
> "var list5180 = null;
> list5180 = list5180(1, 2, 3);"
>
> I think this behavior is incorrect. It is quite surprising for a lexical
> variable to shadow a macro definition.
>
> Daniel
>
> _______________________________________________
> parenscript-devel mailing list
> parenscript-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
>
>




More information about the parenscript-devel mailing list