summaryrefslogtreecommitdiff
path: root/Utility
diff options
context:
space:
mode:
Diffstat (limited to 'Utility')
-rw-r--r--Utility/Conditional.hs6
1 files changed, 6 insertions, 0 deletions
diff --git a/Utility/Conditional.hs b/Utility/Conditional.hs
index 85e39ec64..7a0df4b48 100644
--- a/Utility/Conditional.hs
+++ b/Utility/Conditional.hs
@@ -9,6 +9,12 @@ 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