summaryrefslogtreecommitdiff
path: root/Utility
diff options
context:
space:
mode:
Diffstat (limited to 'Utility')
-rw-r--r--Utility/Conditional.hs6
-rw-r--r--Utility/Monad.hs4
2 files changed, 4 insertions, 6 deletions
diff --git a/Utility/Conditional.hs b/Utility/Conditional.hs
index 7a0df4b48..85e39ec64 100644
--- a/Utility/Conditional.hs
+++ b/Utility/Conditional.hs
@@ -9,12 +9,6 @@ module Utility.Conditional where
import Control.Monad (when, unless)
-untilTrue :: Monad m => [v] -> (v -> m Bool) -> m Bool
-untilTrue [] _ = return False
-untilTrue (v:vs) a = do
- ok <- a v
- if ok then return ok else untilTrue vs a
-
whenM :: Monad m => m Bool -> m () -> m ()
whenM c a = c >>= flip when a
diff --git a/Utility/Monad.hs b/Utility/Monad.hs
index 9523e1716..0d1675fa4 100644
--- a/Utility/Monad.hs
+++ b/Utility/Monad.hs
@@ -24,3 +24,7 @@ firstM p (x:xs) = do
- stopping once one is found. -}
anyM :: (Monad m) => (a -> m Bool) -> [a] -> m Bool
anyM p = liftM isJust . firstM p
+
+{- Runs an action on values from a list until it succeeds. -}
+untilTrue :: (Monad m) => [a] -> (a -> m Bool) -> m Bool
+untilTrue = flip anyM