module NumericPrelude.Monad where {- | repeat action until result fulfills condition -} untilM :: (Monad m) => (a -> Bool) -> m a -> m a untilM p m = do x <- m if p x then return x else untilM p m