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