diff options
author | Joey Hess <joey@kitenet.net> | 2011-08-22 16:14:12 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2011-08-22 16:14:12 -0400 |
commit | 203148363f459635b1be40b8c6ed376073230dda (patch) | |
tree | 422df5684fc77663c6a3c7fd601c1eff27b3758b /Utility/Conditional.hs | |
parent | 4c73d77b42e97ad740d5731ad73c40a31c0c84f9 (diff) |
split groups of related functions out of Utility
Diffstat (limited to 'Utility/Conditional.hs')
-rw-r--r-- | Utility/Conditional.hs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/Utility/Conditional.hs b/Utility/Conditional.hs new file mode 100644 index 000000000..85e39ec64 --- /dev/null +++ b/Utility/Conditional.hs @@ -0,0 +1,26 @@ +{- monadic conditional operators + - + - Copyright 2011 Joey Hess <joey@kitenet.net> + - + - Licensed under the GNU GPL version 3 or higher. + -} + +module Utility.Conditional where + +import Control.Monad (when, unless) + +whenM :: Monad m => m Bool -> m () -> m () +whenM c a = c >>= flip when a + +unlessM :: Monad m => m Bool -> m () -> m () +unlessM c a = c >>= flip unless a + +(>>?) :: Monad m => m Bool -> m () -> m () +(>>?) = whenM + +(>>!) :: Monad m => m Bool -> m () -> m () +(>>!) = unlessM + +-- low fixity allows eg, foo bar >>! error $ "failed " ++ meep +infixr 0 >>? +infixr 0 >>! |