Stream
provides two things:
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
.val unfold : 's ‑> ('s ‑> 'a * 's tenacious) ‑> name:string Core.Lazy.t ‑> 'a t