`Stream` provides two things:

- sharing of the computations needed by various tenacious computations (same as memoize)
- sharing of the `Heart`s representing the validity of the prefixes of the stream That second part is important, as it cannot be done by simply calling `memoize`.

`type 'a t`````
`val unfold : 's ‑> ('s ‑> 'a * 's tenacious) ‑> name:string Core.Lazy.t ‑> 'a t`
`type ('a, 'res) query````=`

`|` `Return of 'res`
`|` `Continue of 'a ‑> ('a, 'res) query`

``
`val query : 'a t ‑> ('a, 'res) query ‑> 'res tenacious`