Copyright | (C) 2015 David Luposchainsky (C) 2015 Herbert Valerio Riedel |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | [email protected] |
Stability | provisional |
Portability | portable |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
Transitional module providing the MonadFail
class and primitive instances.
This module can be imported for defining forward compatible MonadFail
instances:
import qualified Control.Monad.Fail as Fail instance Monad Foo where (>>=) = {- ...bind impl... -} -- Provide legacy fail implementation for when -- new-style MonadFail desugaring is not enabled. fail = Fail.fail instance Fail.MonadFail Foo where fail = {- ...fail implementation... -}
See https://prime.haskell.org/wiki/Libraries/Proposals/MonadFail for more details.
Since: base-4.9.0.0
class Monad m => MonadFail m where Source
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
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 ReadPrec | Since: base-4.9.0.0 |
Defined in Text.ParserCombinators.ReadPrec | |
MonadFail (ST s) | Since: base-4.11.0.0 |
MonadFail (ST s) | Since: base-4.10 |
Defined in Control.Monad.ST.Lazy.Imp | |
MonadFail f => MonadFail (Ap f) | Since: base-4.12.0.0 |
Defined in Data.Monoid |
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.6.1/docs/html/libraries/base-4.12.0.0/Control-Monad-Fail.html