Safe Haskell | None |
---|---|
Language | Haskell2010 |
Documentation
class Monad m => MonadFail (m :: * -> *) where #
When a value is bound in do
-notation, the pattern on the left
hand side of <-
might not match. In this case, this class
provides a function to recover.
A Monad
without a MonadFail
instance may only be used in conjunction
with pattern that always match, such as newtypes, tuples, data types with
only a single data constructor, and irrefutable patterns (~pat
).
Instances of MonadFail
should satisfy the following law: fail s
should
be a left zero for >>=
,
fail s >>= f = fail s
If your Monad
is also MonadPlus
, a popular definition is
fail _ = mzero
Since: base-4.9.0.0
Instances
MonadFail [] | Since: base-4.9.0.0 |
Defined in Control.Monad.Fail | |
MonadFail Maybe | Since: base-4.9.0.0 |
Defined in Control.Monad.Fail | |
MonadFail IO | Since: base-4.9.0.0 |
Defined in Control.Monad.Fail | |
MonadFail ReadP | Since: base-4.9.0.0 |
Defined in Text.ParserCombinators.ReadP | |
MonadFail P | Since: base-4.9.0.0 |
Defined in Text.ParserCombinators.ReadP | |
(Member Fail sig, Carrier sig carrier) => MonadFail (Eff carrier) # | |
Defined in Control.Effect.Internal | |
(Monad m, Error e) => MonadFail (ErrorT e m) | |
Defined in Control.Monad.Trans.Error |