[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Portability and Code walkers



It is still (all but) impossible to write a portable code walker because
of the underspecification of the environment argument to
macroexpand(-1).

I think this problem is well understood, I just thought I would take
advantage of this opportunity to bring it up so that it would be sure to
be recorded in Scott's list of "issues to resolve".


Something like the following is needed.

There need to be constructors and accessors for the environment
structures like:

make-environment 

environment-function/macro-bindings
environment-declarations 

There needs to be a function like variable-globally-special-p, or
variable-special-p which takes a variable and an environment.

It would also be nice if environments had the variable bindings in them.

It may be that the accessors are not required, but the constructor is
required so that a code-walker as it walks down through an flet
(macrolet labels)  can make a new environment corresponding to the scope
of the flet.