[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
re: Random metaclasses for CL types
> I wish we could bring this conversation back down to earth. All I want
> to know is what one-line change to make to the draft ANSI Common Lisp
> spec where it says what a conforming program can assume about the
> behavior of objects of the built-in types.
I thought your proposed wording of May 10 was sufficient:
Each class that corresponds to a predefined Common Lisp type specifier
can be implemented in one of four ways, at the discretion of each
implementation. It can be a {\bit standard class\/} (of the kind
defined by {\bf defclass}), a {\bit structure class\/} (defined
by {\bf defstruct}), a {\bit built-in class\/} (implemented in
a special, non-extensible way), or any other implementation-defined
class that is no more restrictive than a {\bit built-in class\/}.
I think that the question about what "no more restrictive" means is not a
problem when this paragraph is viewed together with the paragraph that
follows it in the draft.
I'm a little concerned, though, about the following paragraph:
It is possible to determine whether a class is a built-in class by
checking the metaclass. A standard class is an instance of {\bf
standard-class}, a built-in class is an instance of {\bf
built-in-class}, and a structure class is an instance of {\bf
structure-class}.
I wouldn't want this to be interpreted in a way that would rule out
subclasses of BUILT-IN-CLASS. Suppose it said:
It is possible to determine whether a class is a built-in class by
checking the metaclass. A standard class is one for which (TYPEP
class 'STANDARD-CLASS) is true, a built-in class is one for which
(TYPEP class 'BUILT-IN-CLASS) is true, and a structure class is one
for which (TYPEP class 'STRUCTURE-CLASS) is true.
Also, I just remembered that I don't think that the class CLASS is
mentioned prior to chapter 3. It would be helpful for the standard to
specify that BUILT-IN-CLASS, STANDARD-CLASS, STRUCTURE-CLASS, and any
other implementation-defined metaclasses are all subclasses of CLASS.
Probably this belongs on page 1-33.