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

names of classes in the standard?



    Date: Sun, 17 Dec 89 13:03:41 MST
    From: sandra%defun@cs.utah.edu (Sandra J Loosemore)

    Does anybody have a list of the standard classes that are specified by
    the CLOS spec?  

Apparently not.  Here's what I know about it:

I'm pretty confident of the accuracy of the names in the figures on
pages 2-22 through 2-24 of the Aug 29, 1989 draft of the ANSI CL spec.
I think this correctly reflects various amendments to the CLOS spec that
were made by X3J13 including incorporation of the proper amount of
material from chapter 3.  However, I have not rechecked it line-by-line
today.

In contrast, the list on page 2-29 has some mistakes.  At least the
following are missing:
  generic-function, standard-generic-function, style-warning

OK, style-warning is missing from p.2-23 also, and "structures" on
p.2-22 should be deleted (structure-object appears on p.2-23).

Of course none of these figures tell you which type names are also class
names, nor do they tell you what the metaclass is.  But I think they do
include all the classes with their names spelled correctly, except
style-warning which was added in June.  Were any other classes added
in June or November?

    (There is also no
    specification of what the class precedence lists are for these
    classes.)

The class precedence lists can be reconstructed from the supertypes
given with the description of each type in chapter 2 of the ANSI CL spec.
Would it be better to give the CPL explicitly or is that just a waste
of space?

Another source of information is the table on p.2-41 of the Aug 29, 1989
draft ANSI CL spec.  I believe this table is correct as far as it goes,
but it unfortunately fails to list all the classes.  In any case it
should have been integrated with the other tables.

    I have not been able to locate
    where in the CLOS document some of the class specifiers that appear in
    the most recent draft of the CL standard were originally defined. 

Some of them were probably never in the CLOS document (88-002R), but were
added after that document was published.  I'm afraid that the bookkeeping
on this may not have been as careful as it should have been.

Perhaps we can take the approach of listing all the type specifiers in
the draft ANSI CL spec that are -not- supposed to be class names.  I
mean this as a way to collect information, not as the way the
presentation should be in the document.  For that, I suggest listing all
the type specifier names and for each one listing either its metaclass
or "not a class" if it's not a class; this could be done graphically in
the type hierarchy diagrams if it wasn't so damn hard to draw such
diagrams with TeX.

Here's my list, as a start.  This falls into three categories: things
like AND that are inherently not classes, things like UNSIGNED-BYTE that
are abbreviations for other types, and things like SIMPLE-ARRAY that are
subtypes of classes that were not deemed critical enough to give classes
of their own.

AND
ATOM
BASE-CHARACTER
BASE-STRING
BIGNUM
BIT
BROADCAST-STREAM
CONCATENATED-STREAM
DOUBLE-FLOAT
ECHO-STREAM
EQL
EXTENDED-CHARACTER
FILE-STREAM
FIXNUM
KEYWORD
LONG-FLOAT
MEMBER
MOD
NIL
NOT
OR 
SATISFIES
SHORT-FLOAT
SIGNED-BYTE
SIMPLE-ARRAY
SIMPLE-BASE-STRING
SIMPLE-BIT-VECTOR
SIMPLE-STRING
SIMPLE-VECTOR
SINGLE-FLOAT
STANDARD-CHAR
STRING-STREAM
SYNONYM-STREAM
TWO-WAY-STREAM
UNSIGNED-BYTE
VALUES

One could quibble with this, in particular, it's unclear why those
who added the stream, character, and string subtypes did not make
them classes.  However, they didn't (I checked the relevant X3J13
documents).