module Gamgine.Control where
import Data.Bool.HT (if')
whenM :: Monad m => m Bool -> m () -> m ()
whenM :: forall (m :: * -> *). Monad m => m Bool -> m () -> m ()
whenM m Bool
p m ()
m = do
Bool
r <- m Bool
p
if Bool
r then m ()
m else () -> m ()
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
ifJust :: Monad m => Maybe a -> (a -> m ()) -> m ()
ifJust :: forall (m :: * -> *) a. Monad m => Maybe a -> (a -> m ()) -> m ()
ifJust (Just a
a) a -> m ()
f = a -> m ()
f a
a
ifJust Maybe a
_ a -> m ()
_ = () -> m ()
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
applyIf :: (a -> Bool) -> (a -> a) -> a -> a
applyIf :: forall a. (a -> Bool) -> (a -> a) -> a -> a
applyIf a -> Bool
p a -> a
f a
a | a -> Bool
p a
a = a -> a
f a
a
| Bool
otherwise = a
a
applyIfM :: Monad m => (a -> Bool) -> (a -> m ()) -> a -> m ()
applyIfM :: forall (m :: * -> *) a.
Monad m =>
(a -> Bool) -> (a -> m ()) -> a -> m ()
applyIfM a -> Bool
p a -> m ()
f a
a | a -> Bool
p a
a = a -> m ()
f a
a
| Bool
otherwise = () -> m ()
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
(?) :: Bool -> a -> a -> a
? :: forall a. Bool -> a -> a -> a
(?) = Bool -> a -> a -> a
forall a. Bool -> a -> a -> a
if'
infixl 1 ?