Warning: This is the manual of the legacy Guile 2.2 series. You may want to read the manual of the current stable series instead.
Next: SRFI-41 Stream Primitives, Up: SRFI-41 [Contents][Index]
SRFI-41 Streams are based on two mutually-recursive abstract data types:
An object of the stream
abstract data type is a promise that,
when forced, is either stream-null
or is an object of type
stream-pair
. An object of the stream-pair
abstract data
type contains a stream-car
and a stream-cdr
, which must be
a stream
. The essential feature of streams is the systematic
suspensions of the recursive promises between the two data types.
The object stored in the stream-car
of a stream-pair
is a
promise that is forced the first time the stream-car
is accessed;
its value is cached in case it is needed again. The object may have any
type, and different stream elements may have different types. If the
stream-car
is never accessed, the object stored there is never
evaluated. Likewise, the stream-cdr
is a promise to return a
stream, and is only forced on demand.