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

Re: STANDARD-TYPE-CLASS



I think that the concept of built-in-class and standard-type-class as
defined by Dick are important and make sense.  I think these should be
mixin's though since there are several possible reasonable combinations.
Something like the following seems right:


(defclass class () ())                          ;the top

(defclass built-in-class-mixin (class) ())      ;microcode knows about
these
(defclass standard-type-class-mixin (class) ()) ;Steele knows about
these

(defclass standard-class (class) ())            ;defclass makes these

;;;
;;; Important combinations of the above:
;;;
(defclass standard-extensible-class (class standard-type-class-mixin)
())
(defclass standard-built-in-class (built-in-class-mixin
                                   standard-type-class-mixin)
     ())


The following are values that MANY, but not all implementations would
return.

(class-of (class-named 'pathname))  ==> standard-extensible-class
(class-of (class-named 'cons))      ==> standard-built-in-class
(class-of (class-named 'stream))    ==> standard-class-mixin

These say that:

PATHNAME is a standard class defined by Steele, in addition, it can be
specified as a direct-superclass in a defclass form.

FIXNUM is a standard class defined by Steele.  In addition, it is
represented "fundamentally" by this Lisp.

STREAM is a standard class defined by Steele.  It is not represented
fundamentally by this Lisp, but it may not be included as a direct
superclass in a defclass form.