Next: Integer Operations, Previous: Exactness, Up: Numbers
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'.