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

Issue COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS, version 8



   ...
   (2) The affected defining macros and their specific side effects are
       as follows....

       DEFCONSTANT: The compiler must recognize that the symbol names a
       constant.  An implementation may choose to evaluate the value-form at
       compile time, load time, or both.  Therefore users must ensure that
       the value-form is evaluable at compile time (regardless of whether or
       not references to the constant appear in the file) and that it always
       evaluates to the same value.  

Presumably this would make (defconstant foo (list 'a)) an error.  Why is it
necessary to permit an implementation to evaluate the constant form at both
compile and load time?

Several references to "the same file"  Does this mean that the compiler can
(or is required to) forget the info once the file has been compiled?
Presumably if the compiler compiles a definition of FOOMAC, then loads a
different version of FOOMAC (say from a different file) later compilations
will use the LOADED version right?  I.e. there must be some precedence
between databases maintained by the compiler and the interpreter if they
are allowed to be separate.

       DEFSTRUCT: ... The #S reader syntax may or may not be 
       available at compile time.  

Can't this be resolved one way or the other?


       DEFINE-CONDITION: The rules are essentially the same as those ...
       DEFCLASS:  The compiler must make the class name be recognized ...
       DEFGENERIC and DEFMETHOD:  These are not required to perform ...

The descriptions of DEFCLASS, DEFGENERIC, and DEFMETHOD are significantly
weeker than the specification of what they do we just received in the CLOS
chapter 3 spec.  If conditions were allowed/required to be classes, then
similar things would apply to DEFINE-CONDITION.  Perhaps these should be
dropped, in favor of the CLOS spec.

       DEFINE-METHOD-COMBINATION:  The compiler is not required to perform
       any compile-time side-effects.

The CLOS spec is silent about DEFINE-METHOD-COMBINATION (at least as far as
I've read), but I presume similar comments apply.