This is an analysis of the R5RS provision that the full numeric tower may be subsetted. In this analysis, four boolean feature settings characterize different kinds of numeric towers:
complex. These refer respectively to the closure of exact numbers under rational operations (except
/), exact non-integer values, inexact rationals, and non-real numbers.
There are therefore 16 possible numeric towers. 9 of them are known to have implementations, as shown below. I write
+ if a feature is present and
- if it is absent, and give a general description of the resulting tower and some Scheme implementations that provide it.
|-||-||-||-||Bounded exact integers only||!SigScheme†, MiniScheme†|
|-||-||+||-||Fixnums and flonums||Plain Chicken 4, Shoe†, TinyScheme†, RScheme, JScheme†, SIOD, BDC†, XLisp†, Schemik†, VX, SXM†, Inlab, Llava, Sixx, Picrin†, Sizzle, Dfsch†, Stalin (also Elisp†, C†)|
|-||+||+||+||Limited-range exact and inexact numbers||S7, Wraith|
|+||-||+||-||Exact integers and inexact real numbers||Bigloo, Scheme 9, Unlikely Scheme††, Elk (also ISLisp)|
|+||-||+||+||Exact integers, inexact real numbers, and complex numbers||SCM, Cyclone|
|+||+||-||-||Exact rational numbers only||Dream, Oaklisp|
|+||+||-||+||Exact numbers only||Owl Lisp|
|+||+||+||-||Real numbers only||Psyche, Ikarus, Rep, Dfsch (also Clojure)|
|+||+||+||+||Full numeric tower||Racket, Gauche, MIT, Gambit, Chicken 4 with the |
†These systems are technically exactness-preserving, but silently return the wrong answers when their arithmetic operations overflow. This makes them non-conformant.
††This system provides ratios, but they are so buggy as to be useless:
(/ 1 3) => 3/7.
NexJ's numeric tower is undocumented and behaves inconsistently in any case: applying
expt to two fixnums, for example, returns a bignum, but adding them returns a potentially incorrect fixnum. Basically it does what Java does.
See also: Complex representations for information on which Schemes support exact, inexact, and mixed-exactness complex numbers.
See also: Float precision for information on the different precisions of inexact numbers that some Schemes support.
Back to Scheme Surveys
Page source (GitHub)