SRFI 158: Generators and Accumulators

by Shiro Kawai, John Cowan, and Thomas Gilray

status: final (2017-10-27)

keywords: Data Structure, R7RS Large, R7RS Large: Tangerine Edition

See also SRFI 121: Generators.

library name: generators-and-accumulators


This SRFI defines utility procedures that create, transform, and consume generators. A generator is simply a procedure with no arguments that works as a source of values. Every time it is called, it yields a value. Generators may be finite or infinite; a finite generator returns an end-of-file object to indicate that it is exhausted. For example, read-char, read-line, and read are generators that generate characters, lines, and objects from the current input port. Generators provide lightweight laziness.

This SRFI also defines procedures that return accumulators. An accumulator is the inverse of a generator: it is a procedure of one argument that works as a sink of values.