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

Re: time of evaluation

This sounds similar to what currently happens with DEFSTRUCT in PCLS --
the information needed to open-code accessors and for handling :include
gets added at both compile and load time, but the functions defstruct
generates are only defined a load time.  I think that, to be consistent,
it would probably be better if the functions were defined at compile
time too.  After all, if you've just overwritten part of the information
for an existing structure type, you might as well overwrite the rest of
it too, and then at least the two pieces of information will agree with
each other.

The reason why I brought this up in the first place is that it's very
difficult to write macros portably without knowing what things become
part of the compile-time environment and what things don't.  I suppose
one could take the conservative approach and wrap an
(eval-when (eval compile load) ...) around the entire contents of
each file, but somehow I don't think this is what the language
designers really had in mind.  I don't have particularly strong feelings
myself on what things should happen when, or whether things defined
in the context of the compiler should or shouldn't modify the
environment permanently.  I would rather see some agreement now on a
standard that most implementations already do, or can easily be changed
to do, rather than spend 3 years arguing about what the most elegant
solution is, and then another 3 years while everybody figures out how
to implement it....