Control.Monad.HT

(<=<)

repeat

untilM

until

iterateLimitM

iterateLimit

andLazy

orLazy