andM is:exact

A version of and lifted to a monad. Retains the short-circuiting behaviour.
andM [Just True,Just False,undefined] == Just False
andM [Just True,Just True ,undefined] == undefined
\xs -> Just (and xs) == andM (map Just xs)
A generalization of andM to Foldable instances. Retains the short-circuiting behaviour.
short-circuit and for values of type Monad m => m Bool
Monadic version of and.
>>> andM [Just True, Just False]
Just False

>>> andM [Just True]
Just True

>>> andM [Just True, Just False, Nothing]
Just False

>>> andM [Just True, Nothing]
Nothing

>>> andM [putTextLn "1" >> pure True, putTextLn "2" >> pure False, putTextLn "3" >> pure True]
1
2
False
Short-cutting version of and . sequence.