unfoldl is:exact
Linear variant of
unfold. Note how they are implemented exactly
identically. They could be merged if multiplicity polymorphism was
supported.
Construct a Moore machine from a state valuation and transition
function
To eveluate function repeatedly to construct a list of type
LengthR n a. The function recieve a state and return a new
state and an element value.
>>> :set -XDataKinds
>>> unfoldl (\n -> (n + 1, 2 * n)) 0 :: LengthR 5 Integer
((((NilR :+ 8) :+ 6) :+ 4) :+ 2) :+ 0