:: m Bool -> m Bool -> m Bool package:relude

Monadic version of (&&) operator. It is lazy by the second argument (similar to (||)), meaning that if the first argument is False, the function will return False without evaluating the second argument.
>>> Just False &&^ Just True
Just False

>>> Just True &&^ Just True
Just True

>>> Just True &&^ Nothing
Nothing

>>> Just False &&^ Nothing
Just False

>>> Just False &&^ error "Shouldn't be evaluated"
Just False
Monadic version of (||) operator. It is lazy by the second argument (similar to (||)), meaning that if the first argument is True, the function will return True without evaluating the second argument.
>>> Just False ||^ Just True
Just True

>>> Just False ||^ Just False
Just False

>>> Just False ||^ Nothing
Nothing

>>> Just True ||^ Nothing
Just True

>>> Just True ||^ error "Shouldn't be evaluated"
Just True