The read syntax for integers is a string of digits, optionally preceded by a minus or plus character, a code indicating the base in which the integer is encoded, and a code indicating whether the number is exact or inexact. The supported base codes are:
#b#B#o#O#d#D#x#XIf the base code is omitted, the integer is assumed to be decimal. The following examples show how these base codes are used.
-13
⇒ -13
#d-13
⇒ -13
#x-13
⇒ -19
#b+1101
⇒ 13
#o377
⇒ 255
The codes for indicating exactness (which can, incidentally, be applied to all numerical values) are:
#e#E#i#IIf the exactness indicator is omitted, the number is exact unless it contains a radix point. Since Guile can not represent exact complex numbers, an error is signalled when asking for them.
(exact? 1.2)
⇒ #f
(exact? #e1.2)
⇒ #t
(exact? #e+1i)
ERROR: Wrong type argument
Guile also understands the syntax ‘+inf.0’ and ‘-inf.0’ for plus and minus infinity, respectively. The value must be written exactly as shown, that is, they always must have a sign and exactly one zero digit after the decimal point. It also understands ‘+nan.0’ and ‘-nan.0’ for the special `not-a-number' value. The sign is ignored for `not-a-number' and the value is always printed as ‘+nan.0’.