Mercurial > hg > xemacs-beta
diff man/lispref/objects.texi @ 4888:c27efc9acb5a
merge
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Wed, 27 Jan 2010 00:37:59 -0600 |
parents | 6772ce4d982b |
children | 755ae5b97edb |
line wrap: on
line diff
--- a/man/lispref/objects.texi Tue Jan 26 18:08:47 2010 -0600 +++ b/man/lispref/objects.texi Wed Jan 27 00:37:59 2010 -0600 @@ -290,31 +290,25 @@ @node Integer Type @subsection Integer Type - The range of values for integers in XEmacs Lisp is @minus{}134217728 to -134217727 (28 bits; i.e., -@ifinfo --2**27 -@end ifinfo -@tex -$-2^{27}$ -@end tex -to -@ifinfo -2**27 - 1) -@end ifinfo -@tex -$2^{28}-1$) -@end tex -on most machines. (Some machines, in particular 64-bit machines such as -the DEC Alpha, may provide a wider range.) It is important to note that -the XEmacs Lisp arithmetic functions do not check for overflow. Thus -@code{(1+ 134217727)} is @minus{}134217728 on most machines. (However, -you @emph{will} get an error if you attempt to read an out-of-range -number using the Lisp reader.) - - The read syntax for integers is a sequence of (base ten) digits with -an optional sign at the beginning. (The printed representation produced -by the Lisp interpreter never has a leading @samp{+}.) + In XEmacs Lisp, integers can be fixnums (that is, fixed-precision +integers) or bignums (arbitrary-precision integers), if compile-time +configuration supports this. The read syntax for the two types is the +same, the type chosen depending on the numeric values involved. + + The range of values for fixnums in XEmacs Lisp is given by the +constants @code{most-positive-fixnum} and @code{most-negative-fixnum}. +On 32-bit machines, these constants reflect 31 value bits, ranging from +@minus{}1073741824 to 1073741823. + + In the absence of @xref{The Bignum Extension}, XEmacs Lisp +arithmetic functions do not check for overflow; so the code snippet +@code{(= most-negative-fixnum (1+ most-positive-fixnum))} will give +@code{t}. However, you @emph{will} get an error if you attempt to read +an out-of-range number using the Lisp reader. + + The main read syntax for integers is a sequence of base ten digits +with an optional sign at the beginning. (The printed representation +produced by the Lisp interpreter never has a leading @samp{+}.) @example @group @@ -1022,7 +1016,7 @@ read syntax; see @ref{String Type}, @ref{Vector Type}, and @ref{Bit Vector Type}. - An array may have any length up to the largest integer; but once + An array may have any length up to the largest fixnum; but once created, it has a fixed size. The first element of an array has index zero, the second element has index 1, and so on. This is called @dfn{zero-origin} indexing. For example, an array of four elements has @@ -1331,7 +1325,7 @@ @subsection Range Table Type @cindex range table type - A @dfn{range table} is a table that maps from ranges of integers to + A @dfn{range table} is a table that maps from ranges of fixnums to arbitrary Lisp objects. Range tables automatically combine overlapping ranges that map to the same Lisp object, and operations are provided for mapping over all of the ranges in a range table. @@ -1714,7 +1708,7 @@ @subsection Syntax Table Type Under XEmacs 20, a @dfn{syntax table} is a particular type of char -table. Under XEmacs 19, a syntax table a vector of 256 integers. In +table. Under XEmacs 19, a syntax table is a vector of 256 integers. In both cases, each element defines how one character is interpreted when it appears in a buffer. For example, in C mode (@pxref{Major Modes}), the @samp{+} character is punctuation, but in Lisp mode it is a valid @@ -2245,7 +2239,7 @@ change in one will be reflected by the same change in the other. @code{eq} returns @code{t} if @var{object1} and @var{object2} are -integers with the same value. It is preferable to use @code{=} or +fixnums with the same value. It is preferable to use @code{=} or @code{eql} in many contexts for numeric comparison, especially since bignums (integers with values that would have otherwise overflowed, only available on some builds) with the same value are not @code{eq};