unfoldM f seed builds an
InputStream from successively
applying
f to the
seed value, continuing if
f produces
Just and halting on
Nothing.
ghci> is <- Streams.unfoldM (n -> return $ if n < 3 then Just (n, n + 1) else Nothing) 0
ghci> Streams.toList is
[0,1,2]