| Portability | portable |
|---|---|
| Stability | experimental |
Control.Shortcircuit
Description
Short-circuit evaluation.
- class HasFalse a where
- false :: a
- class HasTrue a where
- true :: a
- class Shortcircuit a where
- isFalse :: Shortcircuit a => a -> Bool
- if' :: Shortcircuit a => a -> b -> b -> b
- unless' :: Shortcircuit a => a -> b -> b -> b
- (??) :: Shortcircuit a => b -> b -> a -> b
- (||) :: Shortcircuit a => a -> a -> a
- (&&) :: Shortcircuit a => a -> a -> a
- firstTrueOf :: (Shortcircuit a, HasFalse a) => [a] -> a
- lastFalseOf :: (Shortcircuit a, HasTrue a) => [a] -> a
- orM :: (Monad m, Shortcircuit a) => m a -> m a -> m a
- andM :: (Monad m, Shortcircuit a) => m a -> m a -> m a
- firstTrueOfM :: (Monad m, Shortcircuit a, HasFalse a) => [m a] -> m a
- lastFalseOfM :: (Monad m, Shortcircuit a, HasTrue a) => [m a] -> m a
Type classes
Types with a defined false value.
Methods
A false value for this type.
If Shortcircuit a holds, isTrue false == False must hold.
Types with a defined true value.
Methods
A true value for this type.
If Shortcircuit a holds, isTrue true == True must hold.
class Shortcircuit a whereSource
Types that support short circuits.
Instances
| Shortcircuit Bool | |
| Shortcircuit (Maybe a) | |
| Shortcircuit (Either a b) |
Short circuit tests
isFalse :: Shortcircuit a => a -> BoolSource
Whether the value is false-like (i.e. not true-like).
if' :: Shortcircuit a => a -> b -> b -> bSource
if then else generalised to Shortcircuit.
unless' :: Shortcircuit a => a -> b -> b -> bSource
The opposite of if'.
(??) :: Shortcircuit a => b -> b -> a -> bSource
Like if', but with different argument order, allowing infix use.
(||) :: Shortcircuit a => a -> a -> aSource
Prelude.|| generalised to Shortcircuit.
(&&) :: Shortcircuit a => a -> a -> aSource
Prelude.&& generalised to Shortcircuit.
firstTrueOf :: (Shortcircuit a, HasFalse a) => [a] -> aSource
Returns the first true-ish value from a list, or false.
lastFalseOf :: (Shortcircuit a, HasTrue a) => [a] -> aSource
Returns the last false-ish value from a list, or true.
Monadic short circuits
orM :: (Monad m, Shortcircuit a) => m a -> m a -> m aSource
Short-circuit two actions, performing the second only if the first returned a false-ish value.
andM :: (Monad m, Shortcircuit a) => m a -> m a -> m aSource
Short-circuit two actions, performing the second only if the first returned a true-ish value.
firstTrueOfM :: (Monad m, Shortcircuit a, HasFalse a) => [m a] -> m aSource
Short-circuit a list of actions, performing only until a true-ish value is found, or the list exhausted.
lastFalseOfM :: (Monad m, Shortcircuit a, HasTrue a) => [m a] -> m aSource
Short-circuit a list of actions, performing only until a false-ish value is found, or the list exhausted.