GP lisper <spambait@clouddancer.com> wrote:
+---------------
| <pc@p-cos.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
- short-float
- single-float
- double-float
- long-float
- rational
- ratio ; n/d, (and (not (zerop n)) (plusp d) (= (gcd x y) 1))
- integer
- fixnum
- bignum
Also note that while UNSIGNED-BYTE, & SIGNED-BYTE are subtypes of
INTEGER, such values of such types can be in either class FIXNUM
or BIGNUM, so that {UN,}SIGNED-BYTE 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 UNSIGNED-BYTE, 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)572-2607