GP lisper <spambait@clouddancer.com> wrote:
+
 <pc@pcos.net> wrote:
 > Kenneth Tilton wrote:
 >> Lisp G*ds Only, for reasons obvious:
 >> What is/are the big chunks of CL you have never used?
 >
 > I have never used the numerical tower.

 Tower???
+
(*sigh*) Kids these days... ;}
http://en.wikipedia.org/wiki/Numerical_tower
Numerical tower
In Scheme and some other Lisp dialects, a numerical tower is the set
of data types that represent numbers in a given programming language.
Each type in the tower conceptually "sits on" a more fundamental type,
so an integer is a rational number and a number, but the inverse
is not necessarily true, i.e. not every number is an integer; this
asymmetry implies that a language can allow implicit coercions of
numerical types  without creating semantic problems  in only one
direction: ...
And as usual, CL is more a "ball of mud" than Scheme... ;}
The CLHS doesn't use the term "numerical tower" per se, but CL's
numerical tower is implicit in the class precedence lists of its
numeric types [though the "purity" of the class tower is marred
slightly by a few mild restrictions on the COMPLEX and RATIO classes]:
 t
 number
 complex ; includes #c(real 0.0) but excludes #c(rational 0)
 real
 float
 shortfloat
 singlefloat
 doublefloat
 longfloat
 rational
 ratio ; n/d, (and (not (zerop n)) (plusp d) (= (gcd x y) 1))
 integer
 fixnum
 bignum
Also note that while UNSIGNEDBYTE, & SIGNEDBYTE are subtypes of
INTEGER, such values of such types can be in either class FIXNUM
or BIGNUM, so that {UN,}SIGNEDBYTE are *not* "classes" per se,
and thus are not in any of the numeric class precedence lists.
[The CLHS uses a list of Supertypes for these, instead.] Which
also means that, contrary to what one might otherwise expect, BIT,
as a subtype of UNSIGNEDBYTE, is not a sub*class* of FIXNUM.
That is, while CL's numeric *classes* are a tree, its numeric
*types* are a DAG.
Rob

Rob Warnock <rpw3@rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)5722607