[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Issue: TYPE-OF-UNDERCONSTRAINED, v.5
- To: masinter.pa@Xerox.COM
- Subject: Re: Issue: TYPE-OF-UNDERCONSTRAINED, v.5
- From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
- Date: Sat, 18 Mar 89 01:57 EST
- Cc: cl-cleanup@sail.stanford.edu
- In-reply-to: <890317-221413-3463@Xerox>
- Line-fold: No
Date: 17 Mar 89 22:09 PST
From: masinter.pa@Xerox.COM
I think BIT-VECTOR might have been an omission.
NULL was left out because it seemed silly and at odds with current practice
to require that (TYPE-OF 'NIL) = NULL. However, if (CLASS-OF 'NIL) is the
special NULL class, then we would have to reconsider.
In Symbolics Genera 7.4, (TYPE-OF 'NIL) => NULL, so that's some current
practice. 88-002R mandates (SUBTYPEP (CLASS-OF 'NIL) (FIND-CLASS 'NULL)).
SEQUENCE was left out because it is an 'abstract' class and is (as far as
the standard is concerned) exhaustively partitioned by VECTOR and LIST
which are already "lower bounds" of TYPE-OF.
It is not an exhaustive partition, according to CLtL p.35. I put
SEQUENCE in so that if an implementation adds a third kind of SEQUENCE,
TYPE-OF can't be any less specific than SEQUENCE. This is the same reason
that RATIONAL, FLOAT, and NUMBER are in.
BIGNUM and FIXNUM were left out because their division was implementation
dependent.
KEYWORD was left out because under odd circumstances it is possible to
dynamically change the 'type' (e.g., by UNINTERN).
STANDARD-CHAR and STRING-CHAR were left out for the same reasons they
aren't built-in classes.
I'll buy the above three paragraphs, although I don't think any of them
are 100% compelling.