Control.Monad.Trans.Iter
class MonadFree f m
data IterF a b
data IterT m a
delay
retract
iter
hoistIterT