GNU Info

Info Node: (librep.info)Infinite Lists

(librep.info)Infinite Lists


Prev: Association Lists Up: Lists
Enter node , (file) or (file)node

Infinite Lists
..............

   Sometimes it is useful to be able to create `infinite' lists--that
is, lists which appear to have no last element--this can easily be done
in Lisp by linking the cdr of the last cons cell in the list structure
back to the beginning of the list.

      -----------------------------------
     |                                   |
      --> +-----+-----+   +-----+-----+  |
          |  o  |  o----> |  o  |  o-----
          +--|--+-----+   +--|--+-----+
             |               |
              --> 1           --> 2

   The diagram above represents the infinite list `(1 2 1 2 1 2 ...)'.

   Infinite lists have a major drawback though, many of the standard
list manipulation functions can not be used on them. These functions
work by moving through the list until they reach the end. If the list
has _no_ end the function may never terminate and the only option is to
send the interpreter an interrupt signal.

   The only functions which may be used on circular lists are: the cons
cell primitives (`cons', `car', `cdr', `rplaca', `rplacd'), `nth' and
`nthcdr'.

   Also note that infinite lists can't be printed. But note the
`print-length' and `print-level' variables, see Note: Output
Functions.


automatically generated by info2www version 1.2.2.9