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

Re: issue COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS, version 7



>     DEFVAR, DEFPARAMETER: The compiler must recognize that the variables
>     named by these forms have been proclaimed special.  However, the it
>     must not evaluate the initial value or SETQ the variable at compile
>     time.

On the second line, "the it" -> "it".

>     DEFSTRUCT: The compiler must make the structure type name recognized
>     as a valid type name in subsequent declarations (as for DEFTYPE) and
>     make the structure slot accessors known to SETF.  In addition, the
>     compiler must save enough information about the structure type so that
>     further DEFSTRUCT definitions can :INCLUDE a structure type defined
>     earlier in the file being compiled.  The functions which DEFSTRUCT
>     generates are not defined at compile time. 

Shouldn't that last sentence say something like "... need not be defined
..."?  Since the accessor functions commonly default to INLINE, they
often will be defined at compile time.

>     DEFCLASS, DEFMETHOD, DEFGENERIC, DEFINE-METHOD-COMBINATION:  More input
>     is needed from the CLOS committee to decide what to do with these
>     macros.

Since I've been working on compiler updates for supporting CLOS, let me
take a stab at this:

    DEFCLASS:  The compiler must make the class name be recognized as a
    valid type name in subsequent declarations (as for DEFTYPE) and be
    recognized as a valid class name for DEFMETHOD parameter
    specializers and for use as the :METACLASS option of a subsequent
    DEFCLASS.  The compiler must make the class definition available to
    be returned by FIND-CLASS when its environment argument is a value
    received as the &ENVIRONMENT parameter of a macro.

    DEFGENERIC and DEFMETHOD:  These are not required to perform any
    compile-time side effects.  In particular, the methods are not
    installed for invocation during compilation.  An implementation may
    choose to store information about the generic function for the
    purposes of compile-time error-checking (such as checking the number
    of arguments on calls, or noting that a definition for the function
    name has been seen).
    
    DEFINE-METHOD-COMBINATION:  The compiler is not required to perform
    any compile-time side-effects.