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 <||>