:: m Bool -> m Bool -> m Bool

Chooses between a compiled action and an interpreted action based on the configured default.
Nondeterministically choose between two computations.
(m <|> n) >>= k = (m >>= k) <|> (n >>= k)
(m <|> n) <|> o = m <|> (n <|> o)
empty <|> m = m
m <|> empty = m
Convenience function to catch FailedCommand Timeout exceptions and perform some action. Example:
waitUntil 5 (getText <=< findElem $ ByCSS ".class")
`onTimeout` return ""
Generalized version of finally. Note, any monadic side effects in m of the "afterward" computation will be discarded.
Generalized version of onException. Note, any monadic side effects in m of the "afterward" computation will be discarded.
Hint the type system about the type argument.
Flexible type extension

Examples

>>> ext0 [1 :: Int, 2, 3] [True, False] :: [Int]
[1,2,3]
>>> ext0 [1 :: Int, 2, 3] [4 :: Int, 5, 6] :: [Int]
[4,5,6]
Monadic version of or
The lazy || operator lifted to a monad. If the first argument evaluates to True the second argument will not be evaluated.
Just True  ||^ undefined  == Just True
Just False ||^ Just True  == Just True
Just False ||^ Just False == Just False
The lazy && operator lifted to a monad. If the first argument evaluates to False the second argument will not be evaluated.
Just False &&^ undefined  == Just False
Just True  &&^ Just True  == Just True
Just True  &&^ Just False == Just False
Lazy monadic conjunction. That is, when the first action returns False, then False is immediately returned, without running the second action.
Lazy monadic disjunction. That is, when the first action returns True, then True is immediately returned, without running the second action.
The && operator lifted to a monad. If the first argument evaluates to False the second argument will not be evaluated.
The || operator lifted to a monad. If the first argument evaluates to True the second argument will not be evaluated.
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
Short-cutting version of liftM2 (&&).
Short-cutting version of liftM2 (||).
Lazy monadic conjunction.
Lazy monadic disjunction.
&& lifted to a Monad.
|| lifted to a Monad.