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

Re: type-of

Here's a proposed level of specificity for type-of and subtypep which
would be an improvement:

Let Z be  the set of "well-behaved" type specifiers. (To be listed).
Then, for all Z:

For all  data X:

if (typep x Z) => (subtypep (type-of x) z)

This says that type-of has to return something specific enough that
subtypep can deal with it.

My candidate set of "well-behaved" subtypes are exactly those that are
required to be distinct in Common Lisp:

array, number, integer, complex, float, symbol, ratio, rational... 

This (a) isn't hard (b) is probably implemented by most common lisps

The exact set of types identified as "well-behaved" is debatable, but I
think it is wise to leave out any implementation dependent types,
(long-float vs short-float, fixnum vs bignum), all of the non-intrinsic
types (satisfies), or require the relation to be true of any types that
are hard to calculate (things like nested ands and ors).

There may be a more specific stringent specification of type-of and
subtypep that people want to adopt, but its hard to imagine something
*less* specific than this, yet this seems adequate for most of the
purposes I know of.