Modulefused-effects-1.1.2.7Haskell2010
Control.Effect.Fail
An effect providing failure with an error message.
This effect is invoked through the fail method from MonadFail.
Predefined carriers:
- 2 types
- 2 classes
- 1 value
- Packagefused-effects-1.1.2.7
- Exports6
- LanguageHaskell2010
- LicenceBSD-3-Clause
- SourceFail.hs
Fail effect
3 declarationsWhen 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.
Methods
fail :: HasCallStack => String -> m a
Instances54MonadFail, …
MonadFail MaybeDefined in ghc-internal-10.0.0 · GHC.Internal.Control.Monad.FailMonadFail QDefined in ghc-internal-10.0.0 · GHC.Internal.TH.MonadMonadFail PDefined in ghc-internal-10.0.0 · GHC.Internal.Text.ParserCombinators.ReadPMonadFail ReadPDefined in ghc-internal-10.0.0 · GHC.Internal.Text.ParserCombinators.ReadPMonadFail ReadPrecDefined in ghc-internal-10.0.0 · GHC.Internal.Text.ParserCombinators.ReadPrecMonadFail IODefined in ghc-internal-10.0.0 · GHC.Internal.Control.Monad.FailMonadFail []Defined in ghc-internal-10.0.0 · GHC.Internal.Control.Monad.FailAlgebra sig m => MonadFail (FailC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Fail.EitherMonad m => MonadFail (MaybeT m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.MaybeMonadFail m => MonadFail (ChooseC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Choose.ChurchMonadFail m => MonadFail (CullC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Cull.ChurchMonadFail m => MonadFail (CutC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Cut.ChurchMonadFail m => MonadFail (EmptyC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Empty.ChurchMonadFail m => MonadFail (EmptyC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Empty.MaybeMonadFail m => MonadFail (FreshC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Fresh.ChurchMonadFail m => MonadFail (FreshC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Fresh.StrictMonadFail m => MonadFail (LiftC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.LiftMonadFail m => MonadFail (NonDetC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.NonDet.ChurchMonadFail m => MonadFail (TraceC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Trace.IgnoringMonadFail m => MonadFail (TraceC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Trace.PrintingMonadFail m => MonadFail (TraceC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Trace.ReturningMonadFail m => MonadFail (Choosing m)Defined in fused-effects-1.1.2.7 · Control.Effect.ChooseMonadFail f => MonadFail (Ap f)Defined in ghc-internal-10.0.0 · GHC.Internal.Data.MonoidMonadFail m => MonadFail (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.IORefMonadFail m => MonadFail (ErrorC e m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Error.ChurchMonadFail m => MonadFail (ErrorC e m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Error.EitherMonadFail m => MonadFail (ReaderC r m)Defined in fused-effects-1.1.2.7 · Control.Carrier.ReaderMonadFail m => MonadFail (StateC s m)Defined in fused-effects-1.1.2.7 · Control.Carrier.State.ChurchMonadFail m => MonadFail (StateC s m)Defined in fused-effects-1.1.2.7 · Control.Carrier.State.IORefMonadFail m => MonadFail (StateC s m)Defined in fused-effects-1.1.2.7 · Control.Carrier.State.LazyMonadFail m => MonadFail (StateC s m)Defined in fused-effects-1.1.2.7 · Control.Carrier.State.StrictMonadFail m => MonadFail (ThrowC e m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Throw.EitherMonadFail m => MonadFail (WriterC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Writer.ChurchMonadFail m => MonadFail (WriterC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Writer.StrictMonadFail m => MonadFail (ExceptT e m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.ExceptMonadFail m => MonadFail (IdentityT m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.IdentityMonadFail m => MonadFail (ReaderT r m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.ReaderMonadFail m => MonadFail (SelectT r m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.SelectMonadFail m => MonadFail (StateT s m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.State.LazyMonadFail m => MonadFail (StateT s m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.State.StrictMonadFail m => MonadFail (WriterT w m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.Writer.CPSMonadFail m => MonadFail (Reverse m)Defined in transformers-0.6.3.0 · Data.Functor.Reverse(Monoid w, MonadFail m) => MonadFail (AccumT w m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.Accum(Monoid w, MonadFail m) => MonadFail (WriterT w m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.Writer.Lazy(Monoid w, MonadFail m) => MonadFail (WriterT w m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.Writer.Strict(MonadFail m, Monoid w) => MonadFail (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.Church(MonadFail m, Monoid w) => MonadFail (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.StrictMonadFail m => MonadFail (InterpretC s sig m)Defined in fused-effects-1.1.2.7 · Control.Carrier.InterpretMonadFail m => MonadFail (ContT r m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.ContMonadFail (sub m) => MonadFail (Labelled label sub m)Defined in fused-effects-1.1.2.7 · Control.Effect.LabelledMonadFail m => MonadFail (UnderLabel label sub m)Defined in fused-effects-1.1.2.7 · Control.Effect.LabelledMonadFail m => MonadFail (RWST r w s m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.RWS.CPS(Monoid w, MonadFail m) => MonadFail (RWST r w s m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.RWS.Lazy(Monoid w, MonadFail m) => MonadFail (RWST r w s m)Defined in transformers-0.6.3.0 · Control.Monad.Trans.RWS.Strict
Re-exports
3 declarationsclass Monad m => Algebra (sig :: (Type -> Type) -> Type -> Type) (m :: Type -> Type) | m -> sig whereThe class of carriers (results) for algebras (effect handlers) over signatures (effects), whose actions are given by the alg method.
Instances53Algebra, …
Algebra Choose NonEmptyDefined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra Empty MaybeDefined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra NonDet []Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra sig (Choosing m)Defined in fused-effects-1.1.2.7 · Control.Effect.ChooseAlgebra sig m => Algebra sig (Ap m)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra sig (Alt m)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra sig (IdentityT m)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra (Lift Identity) IdentityDefined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra (Lift IO) IODefined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra (Error e) (Either e)Defined in fused-effects-1.1.2.7 · Control.AlgebraMonad m => Algebra (Lift m) (LiftC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.LiftMonoid w => Algebra (Writer w) (Tuple2 w)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra (Reader r) ((->) r)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra (Choose :+: sig) (ChooseC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Choose.ChurchAlgebra sig m => Algebra (Cull :+: (NonDet :+: sig)) (CullC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Cull.ChurchAlgebra sig m => Algebra (Cut :+: (NonDet :+: sig)) (CutC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Cut.ChurchAlgebra sig m => Algebra (Empty :+: sig) (EmptyC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Empty.ChurchAlgebra sig m => Algebra (Empty :+: sig) (EmptyC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Empty.MaybeAlgebra sig m => Algebra (Empty :+: sig) (MaybeT m)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra (Fail :+: sig) (FailC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Fail.EitherAlgebra sig m => Algebra (Fresh :+: sig) (FreshC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Fresh.ChurchAlgebra sig m => Algebra (Fresh :+: sig) (FreshC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Fresh.StrictAlgebra sig m => Algebra (NonDet :+: sig) (NonDetC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.NonDet.ChurchAlgebra sig m => Algebra (Trace :+: sig) (TraceC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Trace.IgnoringAlgebra sig m => Algebra (Trace :+: sig) (TraceC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Trace.Returning(MonadIO m, Algebra sig m) => Algebra (Trace :+: sig) (TraceC m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Trace.PrintingAlgebra sig m => Algebra (Error e :+: sig) (ErrorC e m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Error.ChurchAlgebra sig m => Algebra (Error e :+: sig) (ErrorC e m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Error.EitherAlgebra sig m => Algebra (Error e :+: sig) (ExceptT e m)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra (Reader r :+: sig) (ReaderC r m)Defined in fused-effects-1.1.2.7 · Control.Carrier.ReaderAlgebra sig m => Algebra (Reader r :+: sig) (ReaderT r m)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra (State s :+: sig) (StateC s m)Defined in fused-effects-1.1.2.7 · Control.Carrier.State.ChurchAlgebra sig m => Algebra (State s :+: sig) (StateC s m)Defined in fused-effects-1.1.2.7 · Control.Carrier.State.LazyAlgebra sig m => Algebra (State s :+: sig) (StateC s m)Defined in fused-effects-1.1.2.7 · Control.Carrier.State.StrictAlgebra sig m => Algebra (State s :+: sig) (StateT s m)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra (State s :+: sig) (StateT s m)Defined in fused-effects-1.1.2.7 · Control.AlgebraAlgebra sig m => Algebra (Throw e :+: sig) (ThrowC e m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Throw.Either(Algebra sig m, Monoid w) => Algebra (Accum w :+: sig) (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.Church(Algebra sig m, Monoid w) => Algebra (Accum w :+: sig) (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.Strict(Algebra sig m, Monoid w) => Algebra (Accum w :+: sig) (AccumT w m)Defined in fused-effects-1.1.2.7 · Control.Algebra(Algebra sig m, Monoid w) => Algebra (Writer w :+: sig) (WriterC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Writer.Church(Algebra sig m, Monoid w) => Algebra (Writer w :+: sig) (WriterT w m)Defined in fused-effects-1.1.2.7 · Control.Algebra(Algebra sig m, Monoid w) => Algebra (Writer w :+: sig) (WriterT w m)Defined in fused-effects-1.1.2.7 · Control.Algebra(Algebra sig m, Monoid w) => Algebra (Writer w :+: sig) (WriterT w m)Defined in fused-effects-1.1.2.7 · Control.Algebra(Algebra sig m, Semigroup w, MonadIO m) => Algebra (Accum w :+: sig) (AccumC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Accum.IORef(Monoid w, Algebra sig m) => Algebra (Writer w :+: sig) (WriterC w m)Defined in fused-effects-1.1.2.7 · Control.Carrier.Writer.Strict(MonadIO m, Algebra sig m) => Algebra (State s :+: sig) (StateC s m)Defined in fused-effects-1.1.2.7 · Control.Carrier.State.IORef(Reifies s (Interpreter eff m), Algebra sig m) => Algebra (eff :+: sig) (InterpretC s eff m)Defined in fused-effects-1.1.2.7 · Control.Carrier.InterpretAlgebra (eff :+: sig) (sub m) => Algebra (Labelled label eff :+: sig) (Labelled label sub m)Defined in fused-effects-1.1.2.7 · Control.Effect.Labelled(Algebra sig m, Monoid w) => Algebra (Reader r :+: (Writer w :+: (State s :+: sig))) (RWST r w s m)Defined in fused-effects-1.1.2.7 · Control.Algebra(Algebra sig m, Monoid w) => Algebra (Reader r :+: (Writer w :+: (State s :+: sig))) (RWST r w s m)Defined in fused-effects-1.1.2.7 · Control.Algebra(Algebra sig m, Monoid w) => Algebra (Reader r :+: (Writer w :+: (State s :+: sig))) (RWST r w s m)Defined in fused-effects-1.1.2.7 · Control.Algebra(LabelledMember label sub sig, Algebra sig m) => Algebra (sub :+: sig) (UnderLabel label sub m)Defined in fused-effects-1.1.2.7 · Control.Effect.Labelled
type Has (eff :: (Type -> Type) -> Type -> Type) (sig :: (Type -> Type) -> Type -> Type) (m :: Type -> Type) = (Members eff sig, Algebra sig m)m is a carrier for sig containing eff.
Note that if eff is a sum, it will be decomposed into multiple Member constraints. While this technically allows one to combine multiple unrelated effects into a single Has constraint, doing so has two significant drawbacks:
Due to a problem with recursive type families, this can lead to significantly slower compiles.
It defeats
ghc’s warnings for redundant constraints, and thus can lead to a proliferation of redundant constraints as code is changed.
Run an action exhausted of effects to produce its final result value.