Streams - lazy lists

Streams, sometimes called lazy lists, are a sequential data structure
containing elements computed only on demand. A stream is either null
or is a pair with a stream in its cdr. Since elements of a stream are
computed only when accessed, streams can be infinite. Once computed,
the value of a stream element is cached in case it is needed again.

The Kawa implementations builds on promises.
The stream-null value is a promise that evaluates to the empty list.
The result of stream-cons is an eager immutable pair whose
car and cdr properties return promises.