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

Portability and Code walkers



On P56-58 CLtL defines special forms so that it is *almost* possible
to implement a portable code-walker.  The loophole is that implementors
are only encouraged, not required, to implement CL macros so as
not to expand into implementation-dependant special forms.  All of the
effort to make portable code-walkers possible is useless because of this
exception.

I don't think this exception is neeed.  Instead, implementations should
use implementation-dependant optimizers to get the efficient
compilation, but still provide legitimate expansions.  Another way
out would be to require implementations to provide macro-expansions of
all special forms that can be produced by macro-expansion of any
CL macro.  The compiler could still use its implementation dependant
knowledge of the non-standard special form, while the code walker
could use the (less efficient) macro expansion.

A code walker written according to the description on P57 should be
included in the validation set.  The code walker should be able to
walk all of the code in the validation examples.