28 lines
517 B
Haskell
28 lines
517 B
Haskell
module Bool (
|
|
whenM
|
|
, unlessM
|
|
, ifM
|
|
, guardM
|
|
, bool
|
|
) where
|
|
|
|
import Prelude
|
|
import Control.Monad (MonadPlus, when, unless, guard)
|
|
|
|
bool :: a -> a -> Bool -> a
|
|
bool f t p = if p then t else f
|
|
|
|
whenM :: Monad m => m Bool -> m () -> m ()
|
|
whenM p m =
|
|
p >>= flip when m
|
|
|
|
unlessM :: Monad m => m Bool -> m () -> m ()
|
|
unlessM p m =
|
|
p >>= flip unless m
|
|
|
|
ifM :: Monad m => m Bool -> m a -> m a -> m a
|
|
ifM p x y = p >>= \b -> if b then x else y
|
|
|
|
guardM :: MonadPlus m => m Bool -> m ()
|
|
guardM f = guard =<< f
|