[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: STANDARD-TYPE-CLASS
- To: RPG@SAIL.STANFORD.EDU
- Subject: Re: STANDARD-TYPE-CLASS
- From: Gregor Kiczales <Gregor.pa@Xerox.COM>
- Date: 5 Jan 87 13:54 PST
- Cc: common-lisp-object-system@SAIL.STANFORD.EDU
- In-reply-to: Dick Gabriel <RPG@SAIL.STANFORD.EDU>'s message of 31 Dec 86 15:14 PST
- Sender: Gregor.pa@Xerox.COM
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.