Generalize `Control.Monad.forever`