The MonadRec.Instance
provides the means to combine
MonadRec instances with other type-classes.
Laws for MonadRec.
The MonadRec.Type
should be inherited in type-classes that
are derived from MonadRec.
A reusable implementation for MonadRec.tailRecM that relies on Monad.flatMap.
A reusable implementation for MonadRec.tailRecM that relies on Monad.flatMap.
NOTE: this is UNSAFE to use in case flatMap
is not
tail-recursive.