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

bignums



I'm disappointed if implementations without bignums are considered to be in
compliance with the specification of Common Lisp.  The term "bignum" really
does have a meaning: integers whose range is limited only by available memory
and that lie outside of the fixnum range.  If implementations have "bignums"
that are limited to a bit field length, then they don't really have bignums.
The term "bignum" typically implies other pieces of info about the integers
that it labels: bignums cons and arithmetic on them is not as efficient as
that performed on fixnums.

While I applaud the effort to provide truely portable type specifiers, I do
not agree with the sentiment for removing from Common Lisp type specifications
that are not portably defined in so far as the range of values contained in
the type varies from implementation to implementation.  The type of programming
that you do when you use "fixnums" is very different from what you do using
a specific integer range.  Retaining the term "bignum" to denote that type of
integers that I described above, even as varying from implementation to
implementation seems useful to me.  Sometimes, you want to program in a
mostly portable way that takes into account the underlying system for sake
of efficiency.  I see no reason why the type specifiers "fixnum" and even
"bignum" are not useful identifiers for often-used concepts in this sort of
programming.  So, I advocate leaving "fixnum" and "bignum" as type identifiers
in Common Lisp.  I'd also advocate further specifying that "bignums" really
should have range limited only my memory space and that using a fixed bit-field
size is NOT an appropriate implementation of "bignums".

--Joe Ginder