module Gamgine.Bool where

(<&&>) :: Monad m => m Bool -> m Bool -> m Bool
<&&> :: forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
(<&&>) m Bool
m1 m Bool
m2 = do
   Bool
r1 <- m Bool
m1
   if Bool
r1 then m Bool
m2 else Bool -> m Bool
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
False


(<||>) :: Monad m => m Bool -> m Bool -> m Bool
<||> :: forall (m :: * -> *). Monad m => m Bool -> m Bool -> m Bool
(<||>) m Bool
m1 m Bool
m2 = do
   Bool
r1 <- m Bool
m1
   if Bool
r1 then Bool -> m Bool
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
True else m Bool
m2

infixr 3 <&&>
infixr 2 <||>