Subject: doc out of date about (integer? +inf.0)

From: Zefram <[email-masked]>
Date: Sun, 5 Jan 2014 22:54:35 +0000

The "Integers" node of the guile info document contains this gem (source
in doc/ref/api-data.texi):

          (integer? +inf.0)
          => #t

Actual guile-2.0.9 behaviour:

scheme@(guile-user)> (integer? +inf.0)
$16 = #f

The doc example matches the behaviour of guile-1.8, which classifies
+inf.0 and -inf.0 as integers, and +nan.0 as rational but not integer.
guile-2.0 follows R6RS in treating all three of these values as real
but not rational, and the "Reals and Rationals" node describes this
accurately.

Debian incarnation of this bug report:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=734323

Mathematically, infinities are not real, and NaN is, as the acronym says,
not a number.  The documentation could perhaps do with a note about
the difference between mathematical terminology and Scheme terminology.
I was rather surprised to find any discrepancy, as Scheme's numerical
tower stands out among programming languages as being uniquely accurate
in its use of mathematical terms.  Scheme's concept of "real" more
closely corresponds to the mathematical concept of "hyperreal", which
includes infinities, although NaN doesn't fit.  Scheme's "complex" is
similarly extended relative to the mathematical complex numbers, but
the mathematical term "hypercomplex" unfortunately refers to something
quite different (quaternions and the like).

-zefram