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
fail s should be an action that runs in the monad itself, not an
exception (except in instances of MonadIO). In particular,
fail should not be implemented in terms of error.
Instances39MonadFail, …
MonadFail GetDefined in binary-0.8.9.3 · Data.Binary.Get.InternalMonadFail DListDefined in dlist-1.0 · Data.DList.InternalMonadFail MaybeDefined in ghc-internal-9.1003.0 · GHC.Internal.Control.Monad.FailMonadFail PDefined in ghc-internal-9.1003.0 · GHC.Internal.Text.ParserCombinators.ReadPMonadFail ReadPDefined in ghc-internal-9.1003.0 · GHC.Internal.Text.ParserCombinators.ReadPMonadFail ReadPrecDefined in ghc-internal-9.1003.0 · GHC.Internal.Text.ParserCombinators.ReadPrecMonadFail IODefined in ghc-internal-9.1003.0 · GHC.Internal.Control.Monad.FailMonadFail ArrayDefined in primitive-0.9.1.0 · Data.Primitive.ArrayMonadFail SmallArrayDefined in primitive-0.9.1.0 · Data.Primitive.SmallArrayMonadFail QDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.SyntaxMonadFail VectorDefined in vector-0.13.2.0 · Data.VectorMonadFail VectorDefined in vector-0.13.2.0 · Data.Vector.StrictMonadFail []Defined in ghc-internal-9.1003.0 · GHC.Internal.Control.Monad.FailMonad m => MonadFail (CatchT m)Defined in exceptions-0.10.9 · Control.Monad.Catch.PureMonad m => MonadFail (IterT m)Defined in free-5.2 · Control.Monad.Trans.IterMonad m => MonadFail (MaybeT m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.MaybeMonadFail (bi a) => MonadFail (Biap bi a)Defined in bifunctors-5.6.2 · Data.Bifunctor.BiapMonadFail f => MonadFail (Ap f)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.MonoidMonadFail m => MonadFail (FT f m)Defined in free-5.2 · Control.Monad.Trans.Free.ChurchMonadFail m => MonadFail (ExceptT e m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.ExceptMonadFail m => MonadFail (IdentityT m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.IdentityMonadFail m => MonadFail (ReaderT r m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.ReaderMonadFail m => MonadFail (SelectT r m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.SelectMonadFail m => MonadFail (StateT s m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.State.LazyMonadFail m => MonadFail (StateT s m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.State.StrictMonadFail m => MonadFail (WriterT w m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.Writer.CPSMonadFail m => MonadFail (Reverse m)Defined in transformers-0.6.1.1 · Data.Functor.Reverse(Applicative f, MonadFail m) => MonadFail (FreeT f m)Defined in free-5.2 · Control.Monad.Trans.Free.Ap(Functor f, MonadFail m) => MonadFail (FreeT f m)Defined in free-5.2 · Control.Monad.Trans.Free(Monoid w, MonadFail m) => MonadFail (AccumT w m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.Accum(Monoid w, MonadFail m) => MonadFail (WriterT w m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.Writer.Lazy(Monoid w, MonadFail m) => MonadFail (WriterT w m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.Writer.Strict(Selective f, MonadFail f) => MonadFail (ExceptT e f)Defined in selective-0.7.0.1 · Control.Selective.Trans.ExceptMonadFail m => MonadFail (ContT r m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.Cont(Comonad w, MonadFail m) => MonadFail (CoT w m)Defined in kan-extensions-5.2.7 · Control.Monad.Co(f ~~ f', MonadFail f') => MonadFail (Codensity f)Defined in kan-extensions-5.2.7 · Control.Monad.CodensityMonadFail m => MonadFail (RWST r w s m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.RWS.CPS(Monoid w, MonadFail m) => MonadFail (RWST r w s m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.RWS.Lazy(Monoid w, MonadFail m) => MonadFail (RWST r w s m)Defined in transformers-0.6.1.1 · Control.Monad.Trans.RWS.Strict