A very standard infinite data structure is the stream which lazily
determines its current and next values and even whether they exist or
not! This data structure is useful for describing computations which
are generated and consumed step-by-step and is a powerful basic tool
for many lazy algorithms.
Included in this module are two submodules, Infinite and
Finite. Infinite streams are streams which are guaranteed to always
have a next value and Finite streams are streams which may terminate
but are not obliged to.
Mathematically, Infinite streams are the greatest fixed point of the
functor F X = A * X and Finite streams are the greatest fixed point of
the functor F X = 1 + A * X.