module Data.Bool.Tools ( (&&&), (|||) ) where (&&&), (|||) :: Monad m => m Bool -> m Bool -> m Bool p1 &&& p2 = do b1 <- p1 b2 <- p2 return $ b1 && b2 p1 ||| p2 = do b1 <- p1 b2 <- p2 return $ b1 || b2