Common Lisp the Language, 2nd Edition
![]()
Next: Gatherers
Up: Generators and Gatherers
Previous: Introduction

These functions create and process generators.
[Function]
generatorseries
Given a series, generator returns a generator containing
the same elements.
[Macro]
next-ingenerator{action}*
next-in returns the next element in the generator
generator. The actions can be any Lisp expressions.
They are evaluated if and only if no more elements can be retrieved from
generator. If there are no more elements and no actions, it is
an error. It is also an error to apply next-in to a
generator a second time after the generator has run out of elements. As
an example of generators, consider the following.
(let ((x (generator (scan '(1 2 3 4)))))
(with-output-to-string (s)
(loop (prin1 (next-in x (return)) s)
(prin1 (next-in x (return)) s)
(princ "," s))))
=> "12,34,"
AI.Repository@cs.cmu.edu