Modulecardano-api-11.7.0.0
Cardano.Api.Monad.Error
- 4 types
- 3 classes
- 49 values
- Packagecardano-api-11.7.0.0
- Exports56
- LicenceApache-2.0
- SourceClass.hs
Lifts an Either e into any MonadError e.
do { val <- liftEither =<< action1; action2 }where action1 returns an Either to represent errors.
catchE Constructor for computations in the exception monad. (The inverse of runExcept).
finallyE a b executes computation a followed by computation b,
even if a exits early by throwing an exception. In the latter case,
the exception is re-thrown after b has been executed.
Lift a callCC operation to the new monad.
Lift a listen operation to the new monad.
Lift a pass operation to the new monad.
Map the unwrapped computation using the given function.
runExceptT (mapExceptT f m) = f (runExceptT m)
Extractor for computations in the exception monad. (The inverse of except).
The inverse of ExceptT.
Transform any exceptions thrown by the computation using the given function (a specialization of withExceptT).
Transform any exceptions thrown by the computation using the given function.
Map the unwrapped computation using the given function.
Acquire a resource in ExceptT and then perform an action with it, cleaning up afterwards regardless of left.
This function does not clean up in the event of an exception. Prefer bracketExceptionT in any impure setting.
Acquire a resource in ExceptT and then perform an action with it, cleaning up afterwards regardless of left or exception.
Like bracketExceptT, but the cleanup is called even when the bracketed function throws an exception. Exceptions in the bracketed function are caught to allow the cleanup to run and then rethrown.
Flipped handleExceptT.
Flipped handleIOExceptT.
Flipped handleLeftT.
Flipped handlesExceptT.
Map over both arguments at the same time.
Specialised version of bimap for ExceptT.
Map the Left unwrapped computation using the given function.
Try any monad action and catch the specified exception, wrapping it to convert it to the error type of the ExceptT transformer. Exceptions other that the specified exception type will escape the ExceptT transformer.
Warning*: This function should be used with caution! In particular, it is bad practice to catch SomeException because that includes asynchronous exceptions like stack/heap overflow, thread killed and user interrupt. Trying to handle
StackOverflow,HeapOverflowandThreadKilledexceptions could cause your program to crash or behave in unexpected ways.
Try an IO action inside an ExceptT. If the IO action throws an IOException, catch it and wrap it with the provided handler to convert it to the error type of the ExceptT transformer. Exceptions other than IOException will escape the ExceptT transformer.
Note: IOError is a type synonym for IOException.
Handle an error. Equivalent to handleError in mtl package.
Convert an Either to a Maybe and execute the supplied handler in the Left case.
Constructor for left computations.
Constructor for computations in the ExceptT monad. (The inverse of runExceptT).
Handle the Left constructor in returned Either.
Handle the Nothing constructor in returned Maybe.
Constructor for right computations.
Map the Right unwrapped computation using the given function.
type MonadIOTransError e (t :: (Type -> Type) -> Type -> Type) (m :: Type -> Type) = (MonadIO m, MonadIO (t m), MonadCatch m, MonadTrans t, MonadError e (t m))type MonadTransError e (t :: (Type -> Type) -> Type -> Type) (m :: Type -> Type) = (Monad m, MonadTrans t, MonadError e (t m))Monads in which IO computations may be embedded. Any monad built by applying a sequence of monad transformers to the IO monad will be an instance of this class.
Instances should satisfy the following laws, which state that liftIO is a transformer of monads:
Methods
liftIO :: IO a -> m aLift a computation from the IO monad. This allows us to run IO computations in any monadic stack, so long as it supports these kinds of operations (i.e. IO is the base monad for the stack).
Example
import Control.Monad.Trans.State -- from the "transformers" library printState :: Show s => StateT s IO () printState = do state <- get liftIO $ print stateHad we omitted
liftIO, we would have ended up with this error:• Couldn't match type ‘IO’ with ‘StateT s IO’ Expected type: StateT s IO () Actual type: IO ()The important part here is the mismatch between
StateT s IO ()andIO ().Luckily, we know of a function that takes an
IO aand returns an(m a):liftIO, enabling us to run the program and see the expected results:> evalStateT printState "hello" "hello" > evalStateT printState 3 3
Instances71Lifting, MonadIO, …
MonadIO CheckMainDefined in foundation-0.0.30 · Foundation.Check.MainMonadIO QDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.SyntaxMonadIO IODefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Monad.IO.ClassMonadIO AcquireDefined in resourcet-1.3.0 · Data.Acquire.InternalMonad m => MonadIO (QuoteToQuasi m)Defined in th-compat-0.1.7 · Language.Haskell.TH.Syntax.CompatMonadIO m => MonadIO (PropertyM m)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.MonadicMonadIO m => MonadIO (ZeptoT m)Defined in attoparsec-0.14.4 · Data.Attoparsec.ZeptoMonadIO m => MonadIO (CatchT m)Defined in exceptions-0.10.11 · Control.Monad.Catch.PureMonadIO m => MonadIO (ResourceT m)Defined in foundation-0.0.30 · Foundation.Conduit.InternalMonadIO m => MonadIO (IdentityT m)Defined in foundation-0.0.30 · Foundation.Monad.IdentityMonadIO m => MonadIO (IterT m)Defined in free-5.2 · Control.Monad.Trans.IterMonadIO m => MonadIO (GenT m)Defined in hedgehog-1.7 · Hedgehog.Internal.GenMonadIO m => MonadIO (PropertyT m)Defined in hedgehog-1.7 · Hedgehog.Internal.PropertyMonadIO m => MonadIO (TestT m)Defined in hedgehog-1.7 · Hedgehog.Internal.PropertyMonadIO m => MonadIO (TreeT m)Defined in hedgehog-1.7 · Hedgehog.Internal.TreeMonadIO m => MonadIO (ListT m)Defined in list-t-1.0.5.7 · ListTMonadIO m => MonadIO (LogicT m)Defined in logict-0.8.2.0 · Control.Monad.LogicMonadIO m => MonadIO (QuoteT m)Defined in plutus-core-1.70.0.0 · PlutusCore.QuoteMonadIO m => MonadIO (ResourceT m)Defined in resourcet-1.3.0 · Control.Monad.Trans.Resource.InternalMonadIO m => MonadIO (ByteStream m)Defined in streaming-bytestring-0.3.4 · Streaming.ByteString.InternalMonadIO m => MonadIO (MaybeT m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.MaybeMonadIO m => MonadIO (FailT e m)Defined in FailT-0.1.2.0 · Control.Monad.Trans.FailMonadIO m => MonadIO (RandT g m)Defined in MonadRandom-0.6.2.1 · Control.Monad.Trans.Random.LazyMonadIO m => MonadIO (RandT g m)Defined in MonadRandom-0.6.2.1 · Control.Monad.Trans.Random.StrictMonadIO m => MonadIO (ExceptRT r m)Defined in errors-2.3.0 · Data.EitherRMonadIO m => MonadIO (ExceptT e m)Defined in foundation-0.0.30 · Foundation.Monad.ExceptMonadIO m => MonadIO (ReaderT r m)Defined in foundation-0.0.30 · Foundation.Monad.ReaderMonadIO m => MonadIO (FT f m)Defined in free-5.2 · Control.Monad.Trans.Free.ChurchMonadIO m => MonadIO (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ExceptMonadIO m => MonadIO (IdentityT m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.IdentityMonadIO m => MonadIO (ReaderT r m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ReaderMonadIO m => MonadIO (SelectT r m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.SelectMonadIO m => MonadIO (StateT s m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.State.LazyMonadIO m => MonadIO (StateT s m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.State.StrictMonadIO m => MonadIO (WriterT w m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.CPSMonadIO m => MonadIO (ValidationMonadT err m)Defined in validation-1.3.2 · Data.Validation.ValidationMonad(Representable f, MonadIO m) => MonadIO (ReaderT f m)Defined in adjunctions-4.4.4 · Control.Monad.Representable.Reader(Applicative f, MonadIO m) => MonadIO (FreeT f m)Defined in free-5.2 · Control.Monad.Trans.Free.Ap(Functor f, MonadIO m) => MonadIO (FreeT f m)Defined in free-5.2 · Control.Monad.Trans.Free(Functor m, MonadIO m) => MonadIO (StateT s m)Defined in foundation-0.0.30 · Foundation.Monad.State(Monoid w, Functor m, MonadIO m) => MonadIO (AccumT w m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Accum(Monoid w, MonadIO m) => MonadIO (WriterT w m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.Lazy(Monoid w, MonadIO m) => MonadIO (WriterT w m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.Strict(MonadIO m, Functor f) => MonadIO (Stream f m)Defined in streaming-0.2.4.0 · Streaming.Internal(Selective f, MonadIO f) => MonadIO (ExceptT e f)Defined in selective-0.7.0.1 · Control.Selective.Trans.ExceptLifting MonadIO MaybeTDefined in constraints-0.14.4 · Data.Constraint.LiftingLifting MonadIO IdentityTDefined in constraints-0.14.4 · Data.Constraint.LiftingLifting MonadIO (ExceptT e)Defined in constraints-0.14.4 · Data.Constraint.LiftingLifting MonadIO (ReaderT e)Defined in constraints-0.14.4 · Data.Constraint.LiftingLifting MonadIO (StateT s)Defined in constraints-0.14.4 · Data.Constraint.LiftingLifting MonadIO (StateT s)Defined in constraints-0.14.4 · Data.Constraint.LiftingMonoid w => Lifting MonadIO (WriterT w)Defined in constraints-0.14.4 · Data.Constraint.LiftingMonoid w => Lifting MonadIO (WriterT w)Defined in constraints-0.14.4 · Data.Constraint.LiftingLifting MonadIO (ContT r)Defined in constraints-0.14.4 · Data.Constraint.LiftingMonoid w => Lifting MonadIO (RWST r w s)Defined in constraints-0.14.4 · Data.Constraint.LiftingMonoid w => Lifting MonadIO (RWST r w s)Defined in constraints-0.14.4 · Data.Constraint.LiftingMonadIO (f (g m)) => MonadIO (ComposeT f g m)Defined in mmorph-1.2.2 · Control.Monad.Trans.ComposeMonadIO f => MonadIO (ValidatorMonadProfunctorT err f x)Defined in validation-1.3.2 · Data.Validation.ValidatorMonadIO f => MonadIO (ValidatorMonadT x err f)Defined in validation-1.3.2 · Data.Validation.ValidatorMonadIO m => MonadIO (ConduitT i o m)Defined in conduit-1.3.6.1 · Data.Conduit.Internal.ConduitMonadIO m => MonadIO (Conduit i o m)Defined in foundation-0.0.30 · Foundation.Conduit.InternalMonadIO m => MonadIO (ParsecT s u m)Defined in parsec-3.1.18.0 · Text.Parsec.PrimMonadIO m => MonadIO (ContT r m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Cont(Comonad w, MonadIO m) => MonadIO (CoT w m)Defined in kan-extensions-5.2.8 · Control.Monad.Co(Stream s, MonadIO m) => MonadIO (ParsecT e s m)Defined in megaparsec-9.8.3 · Text.Megaparsec.Internal(m ~~ m', MonadIO m') => MonadIO (Codensity m)Defined in kan-extensions-5.2.8 · Control.Monad.CodensityMonadIO m => MonadIO (RWST r w s m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.RWS.CPS(Monoid w, MonadIO m) => MonadIO (RWST r w s m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.RWS.Lazy(Monoid w, MonadIO m) => MonadIO (RWST r w s m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.RWS.StrictMonadIO m => MonadIO (LocalStateQueryExpr block point query r m)Defined in cardano-api-11.7.0.0 · Cardano.Api.Network.IPC.Internal.MonadMonadIO m => MonadIO (Pipe l i o u m)Defined in conduit-1.3.6.1 · Data.Conduit.Internal.Pipe
The strategy of combining computations that can throw exceptions by bypassing bound functions from the point an exception is thrown to the point that it is handled.
Is parameterized over the type of error information and
the monad type constructor.
It is common to use Either String as the monad type constructor
for an error monad in which error descriptions take the form of strings.
In that case and many other common cases the resulting monad is already defined
as an instance of the MonadError class.
You can also define your own error type and/or use a monad type constructor
other than Either or StringEither .
In these cases you will have to explicitly define instances of the MonadError
class.
(If you are using the deprecated IOErrorControl.Monad.Error or
Control.Monad.Trans.Error, you may also have to define an Error instance.)
Methods
throwError :: e -> m aIs used within a monadic computation to begin exception processing.
catchError :: m a -> (e -> m a) -> m aA handler function to handle previous errors and return to normal execution. A common idiom is:
do { action1; action2; action3 } `catchError` handlerwhere the
actionfunctions can call throwError. Note thathandlerand the do-block must have the same return type.
Instances55Lifting, MonadError, …
MonadError IOException IODefined in mtl-2.3.1 · Control.Monad.Error.ClassMonadError BuiltinError BuiltinResultDefined in plutus-core-1.70.0.0 · PlutusCore.Builtin.ResultMonadError () MaybeDefined in mtl-2.3.1 · Control.Monad.Error.ClassMonadError () EvaluationResultDefined in plutus-core-1.70.0.0 · PlutusCore.Evaluation.ResultMonadError e (Either e)Defined in mtl-2.3.1 · Control.Monad.Error.ClassMonadError e m => MonadError e (Free m)Defined in free-5.2 · Control.Monad.FreeMonadError e m => MonadError e (Free m)Defined in free-5.2 · Control.Monad.Free.ApMonadError e m => MonadError e (IterT m)Defined in free-5.2 · Control.Monad.Trans.IterMonadError e m => MonadError e (GenT m)Defined in hedgehog-1.7 · Hedgehog.Internal.GenMonadError e m => MonadError e (PropertyT m)Defined in hedgehog-1.7 · Hedgehog.Internal.PropertyMonadError e m => MonadError e (TestT m)Defined in hedgehog-1.7 · Hedgehog.Internal.PropertyMonadError e m => MonadError e (TreeT m)Defined in hedgehog-1.7 · Hedgehog.Internal.TreeMonadError e m => MonadError e (ListT m)Defined in list-t-1.0.5.7 · ListTMonadError e m => MonadError e (LogicT m)Defined in logict-0.8.2.0 · Control.Monad.LogicMonadError e m => MonadError e (QuoteT m)Defined in plutus-core-1.70.0.0 · PlutusCore.QuoteMonadError e m => MonadError e (ResourceT m)Defined in resourcet-1.3.0 · Control.Monad.Trans.Resource.InternalMonadError e m => MonadError e (MaybeT m)Defined in mtl-2.3.1 · Control.Monad.Error.ClassMonad m => MonadError e (ExceptT e m)Defined in mtl-2.3.1 · Control.Monad.Error.ClassMonad m => MonadError err (ValidationMonadT err m)Defined in validation-1.3.2 · Data.Validation.ValidationMonadExample1 expression throwError "err" :: ValidationMonadT String Identity IntValidationMonadT (Identity (Failure "err"))
Example1 expression catchError (throwError "err" :: ValidationMonadT String Identity Int) (\e -> pure (length e))ValidationMonadT (Identity (Success 3))
MonadError e m => MonadError e (FailT e m)Defined in FailT-0.1.2.0 · Control.Monad.Trans.FailMonadError e m => MonadError e (RandT g m)Defined in MonadRandom-0.6.2.1 · Control.Monad.Trans.Random.LazyMonadError e m => MonadError e (RandT g m)Defined in MonadRandom-0.6.2.1 · Control.Monad.Trans.Random.StrictMonadError e m => MonadError e (IdentityT m)Defined in mtl-2.3.1 · Control.Monad.Error.ClassMonadError e m => MonadError e (ReaderT r m)Defined in mtl-2.3.1 · Control.Monad.Error.ClassMonadError e m => MonadError e (StateT s m)Defined in mtl-2.3.1 · Control.Monad.Error.ClassMonadError e m => MonadError e (StateT s m)Defined in mtl-2.3.1 · Control.Monad.Error.Class(Applicative f, MonadError e m) => MonadError e (FreeT f m)Defined in free-5.2 · Control.Monad.Trans.Free.Ap(Functor f, MonadError e m) => MonadError e (FreeT f m)Defined in free-5.2 · Control.Monad.Trans.Free(Functor f, MonadError e m) => MonadError e (FT f m)Defined in free-5.2 · Control.Monad.Trans.Free.Church(Functor f, MonadError e m) => MonadError e (Stream f m)Defined in streaming-0.2.4.0 · Streaming.Internal(Monoid w, MonadError e m) => MonadError e (AccumT w m)Defined in mtl-2.3.1 · Control.Monad.Error.Class(Monoid w, MonadError e m) => MonadError e (WriterT w m)Defined in mtl-2.3.1 · Control.Monad.Error.Class(Monoid w, MonadError e m) => MonadError e (WriterT w m)Defined in mtl-2.3.1 · Control.Monad.Error.Class(Monoid w, MonadError e m) => MonadError e (WriterT w m)Defined in mtl-2.3.1 · Control.Monad.Error.ClassMonad f => MonadError err (ValidatorMonadProfunctorT err f x)Defined in validation-1.3.2 · Data.Validation.ValidatorExample4 expressions import Control.Lens(view, _Wrapped')import Control.Monad.Error.Class(MonadError(throwError, catchError))let ValidationMonadT (Identity r) = view _Wrapped' (throwError ["oops"] :: ValidatorMonadProfunctorT [String] Identity Int Int) 3rFailure ["oops"]
Example4 expressions let v = ValidatorMonadProfunctorT (\_ -> ValidationMonadT (Identity (Failure ["e1"]))) :: ValidatorMonadProfunctorT [String] Identity Int Intlet h _ = ValidatorMonadProfunctorT (\x -> ValidationMonadT (Identity (Success (x * 2)))) :: ValidatorMonadProfunctorT [String] Identity Int Intlet ValidationMonadT (Identity r) = view _Wrapped' (catchError v h) 3rSuccess 6
Monad f => MonadError err (ValidatorMonadT x err f)Defined in validation-1.3.2 · Data.Validation.ValidatorExample5 expressions import Data.Functor.Identity (Identity(..))import Data.Validation.Validation (Validation(..))import Data.Validation.ValidationMonad (ValidationMonadT(..))import Control.Monad.Error.Class (throwError, catchError)let ValidatorMonadT f = throwError ["oops"] :: ValidatorMonadT Int [String] Identity Int in let ValidationMonadT (Identity r) = f 0 in rFailure ["oops"]
Example2 expressions let e = ValidatorMonadT (\_ -> ValidationMonadT (Identity (Failure ["e"]))) :: ValidatorMonadT Int [String] Identity Intlet ValidatorMonadT f = catchError e (\_ -> ValidatorMonadT (\_ -> ValidationMonadT (Identity (Success 99)))) in let ValidationMonadT (Identity r) = f 0 in rSuccess 99
MonadError e (f (g m)) => MonadError e (ComposeT f g m)Defined in mmorph-1.2.2 · Control.Monad.Trans.ComposeMonadError e m => MonadError e (ConduitT i o m)Defined in conduit-1.3.6.1 · Data.Conduit.Internal.ConduitMonadError e m => MonadError e (ParsecT s u m)Defined in parsec-3.1.18.0 · Text.Parsec.Prim(Comonad w, MonadError e m) => MonadError e (CoT w m)Defined in kan-extensions-5.2.8 · Control.Monad.Co(Stream s, MonadError e' m) => MonadError e' (ParsecT e s m)Defined in megaparsec-9.8.3 · Text.Megaparsec.Internal(Monoid w, MonadError e m) => MonadError e (RWST r w s m)Defined in mtl-2.3.1 · Control.Monad.Error.Class(Monoid w, MonadError e m) => MonadError e (RWST r w s m)Defined in mtl-2.3.1 · Control.Monad.Error.Class(Monoid w, MonadError e m) => MonadError e (RWST r w s m)Defined in mtl-2.3.1 · Control.Monad.Error.ClassMonadError e m => MonadError e (Pipe l i o u m)Defined in conduit-1.3.6.1 · Data.Conduit.Internal.PipeLifting (MonadError e) MaybeTDefined in constraints-0.14.4 · Data.Constraint.LiftingLifting (MonadError e) IdentityTDefined in constraints-0.14.4 · Data.Constraint.LiftingLifting (MonadError e) (ReaderT r)Defined in constraints-0.14.4 · Data.Constraint.LiftingLifting (MonadError e) (StateT s)Defined in constraints-0.14.4 · Data.Constraint.LiftingLifting (MonadError e) (StateT s)Defined in constraints-0.14.4 · Data.Constraint.LiftingMonoid w => Lifting (MonadError e) (WriterT w)Defined in constraints-0.14.4 · Data.Constraint.LiftingMonoid w => Lifting (MonadError e) (WriterT w)Defined in constraints-0.14.4 · Data.Constraint.LiftingMonoid w => Lifting (MonadError e) (RWST r w s)Defined in constraints-0.14.4 · Data.Constraint.LiftingMonoid w => Lifting (MonadError e) (RWST r w s)Defined in constraints-0.14.4 · Data.Constraint.LiftingThrowableBuiltins uni fun => MonadError (CekEvaluationException NamedDeBruijn uni fun) (CekM uni fun s)Defined in plutus-core-1.70.0.0 · UntypedPlutusCore.Evaluation.Machine.Cek.Internal
class (forall (m :: Type -> Type). Monad m => Monad (t m)) => MonadTrans (t :: (Type -> Type) -> Type -> Type) whereThe class of monad transformers.
For any monad m, the result t m should also be a monad,
and lift should be a monad transformation from m to t m,
i.e. it should satisfy the following laws:
Since 0.6.0.0 and for GHC 8.6 and later, the requirement that t m
be a Monad is enforced by the implication constraint
forall m. Monad m => Monad (t m) enabled by the
QuantifiedConstraints extension.
Ambiguity error with GHC 9.0 to 9.2.2
These versions of GHC have a bug (https://gitlab.haskell.org/ghc/ghc/-/issues/20582) which causes constraints like
(MonadTrans t, forall m. Monad m => Monad (t m)) => ...
to be reported as ambiguous. For transformers 0.6 and later, this can be fixed by removing the second constraint, which is implied by the first.
Instances66MonadTrans, …
MonadTrans PropertyMDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.MonadicMonadTrans CatchTDefined in exceptions-0.10.11 · Control.Monad.Catch.PureMonadTrans FreeDefined in free-5.2 · Control.Monad.FreeThis is not a true monad transformer. It is only a monad transformer "up to retract".
MonadTrans FreeDefined in free-5.2 · Control.Monad.Free.ApThis is not a true monad transformer. It is only a monad transformer "up to retract".
MonadTrans FDefined in free-5.2 · Control.Monad.Free.ChurchMonadTrans IterTDefined in free-5.2 · Control.Monad.Trans.IterMonadTrans GenTDefined in hedgehog-1.7 · Hedgehog.Internal.GenMonadTrans PropertyTDefined in hedgehog-1.7 · Hedgehog.Internal.PropertyMonadTrans TestTDefined in hedgehog-1.7 · Hedgehog.Internal.PropertyMonadTrans TreeTDefined in hedgehog-1.7 · Hedgehog.Internal.TreeMonadTrans CoyonedaDefined in kan-extensions-5.2.8 · Data.Functor.CoyonedaMonadTrans YonedaDefined in kan-extensions-5.2.8 · Data.Functor.YonedaMonadTrans ReadResultTDefined in kes-agent-1.3.0.0 · Cardano.KESAgent.Serialization.RawUtilMonadTrans ListTDefined in list-t-1.0.5.7 · ListTMonadTrans LogicTDefined in logict-0.8.2.0 · Control.Monad.LogicMonadTrans ListTDefined in optparse-applicative-0.19.0.0 · Options.Applicative.InternalMonadTrans NondetTDefined in optparse-applicative-0.19.0.0 · Options.Applicative.InternalMonadTrans PerasEnabledTDefined in ouroboros-consensus-4.2.1.0 · Ouroboros.Consensus.HardFork.History.EraParamsMonadTrans WithEarlyExitDefined in ouroboros-consensus-4.2.1.0 · Ouroboros.Consensus.Util.EarlyExitMonadTrans UnhighlightedDefined in parsers-0.12.12 · Text.Parser.TokenMonadTrans UnlinedDefined in parsers-0.12.12 · Text.Parser.TokenMonadTrans UnspacedDefined in parsers-0.12.12 · Text.Parser.TokenMonadTrans QuoteTDefined in plutus-core-1.70.0.0 · PlutusCore.QuoteMonadTrans ResourceTDefined in resourcet-1.3.0 · Control.Monad.Trans.Resource.InternalMonadTrans ByteStreamDefined in streaming-bytestring-0.3.4 · Streaming.ByteString.InternalMonadTrans MaybeTDefined in transformers-0.6.1.2 · Control.Monad.Trans.MaybeRepresentable f => MonadTrans (ReaderT f)Defined in adjunctions-4.4.4 · Control.Monad.Representable.ReaderRepresentable f => MonadTrans (StateT f)Defined in adjunctions-4.4.4 · Control.Monad.Representable.StateAlternative f => MonadTrans (CofreeT f)Defined in free-5.2 · Control.Comonad.Trans.CofreeApplicative f => MonadTrans (FreeT f)Defined in free-5.2 · Control.Monad.Trans.Free.ApFunctor f => MonadTrans (FreeT f)Defined in free-5.2 · Control.Monad.Trans.FreeFunctor f => MonadTrans (Stream f)Defined in streaming-0.2.4.0 · Streaming.InternalMonoid w => MonadTrans (AccumT w)Defined in transformers-0.6.1.2 · Control.Monad.Trans.AccumMonoid w => MonadTrans (WriterT w)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.LazyMonoid w => MonadTrans (WriterT w)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.StrictMonadTrans ElectricDefined in ouroboros-consensus-4.2.1.0 · Ouroboros.Consensus.UtilMonadTrans IdentityTDefined in transformers-0.6.1.2 · Control.Monad.Trans.IdentityMonadTrans (FailT e)Defined in FailT-0.1.2.0 · Control.Monad.Trans.FailMonadTrans (RandT g)Defined in MonadRandom-0.6.2.1 · Control.Monad.Trans.Random.LazyMonadTrans (RandT g)Defined in MonadRandom-0.6.2.1 · Control.Monad.Trans.Random.StrictMonadTrans (ExceptRT r)Defined in errors-2.3.0 · Data.EitherRMonadTrans (FT f)Defined in free-5.2 · Control.Monad.Trans.Free.ChurchMonadTrans (WithTempRegistry st)Defined in resource-registry-0.3.0.0 · Control.ResourceRegistryMonadTrans (ProvM t)Defined in small-steps-1.1.4.0 · Control.ProvenanceMonadTrans (ExceptT e)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ExceptMonadTrans (ReaderT r)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ReaderMonadTrans (SelectT r)Defined in transformers-0.6.1.2 · Control.Monad.Trans.SelectMonadTrans (StateT s)Defined in transformers-0.6.1.2 · Control.Monad.Trans.State.LazyMonadTrans (StateT s)Defined in transformers-0.6.1.2 · Control.Monad.Trans.State.StrictMonadTrans (WriterT w)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.CPSMonadTrans (ValidationMonadT err)Defined in validation-1.3.2 · Data.Validation.ValidationMonadExample1 expression lift (Identity 1) :: ValidationMonadT String Identity IntValidationMonadT (Identity (Success 1))
Comonad w => MonadTrans (ContsT r w)Defined in adjunctions-4.4.4 · Control.Monad.Trans.ContsComonad w => MonadTrans (CoT w)Defined in kan-extensions-5.2.8 · Control.Monad.CoStream s => MonadTrans (ParsecT e s)Defined in megaparsec-9.8.3 · Text.Megaparsec.InternalMonadTrans CodensityDefined in kan-extensions-5.2.8 · Control.Monad.CodensityMonadTrans (ConduitT i o)Defined in conduit-1.3.6.1 · Data.Conduit.Internal.ConduitMonadTrans (ParsecT s u)Defined in parsec-3.1.18.0 · Text.Parsec.PrimMonadTrans (ContT r)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ContMonadTrans (ValidatorMonadT x err)Defined in validation-1.3.2 · Data.Validation.ValidatorExample5 expressions import Data.Functor.Identity (Identity(..))import Data.Validation.Validation (Validation(..))import Data.Validation.ValidationMonad (ValidationMonadT(..))import Control.Monad.Trans.Class (lift)let ValidatorMonadT f = lift (Identity 42) :: ValidatorMonadT Int [String] Identity Int in let ValidationMonadT (Identity r) = f 0 in rSuccess 42
(Adjunction f g, Traversable f) => MonadTrans (AdjointT f g)Defined in adjunctions-4.4.4 · Control.Monad.Trans.AdjointExploiting this instance requires that we have the missing Traversables for Identity, (,)e and IdentityT
(MFunctor f, MonadTrans f, MonadTrans g) => MonadTrans (ComposeT f g)Defined in mmorph-1.2.2 · Control.Monad.Trans.ComposeMonoid w => MonadTrans (RWST r w s)Defined in transformers-0.6.1.2 · Control.Monad.Trans.RWS.LazyMonoid w => MonadTrans (RWST r w s)Defined in transformers-0.6.1.2 · Control.Monad.Trans.RWS.StrictMonadTrans (RWST r w s)Defined in transformers-0.6.1.2 · Control.Monad.Trans.RWS.CPSMonadTrans (Pipe l i o u)Defined in conduit-1.3.6.1 · Data.Conduit.Internal.PipeMonadTrans (OptimizerT name uni fun ann)Defined in plutus-core-1.70.0.0 · UntypedPlutusCore.Transform.Optimizer
The parameterizable exception monad.
Computations are either exceptions (of any type) or normal values. These computations are plain values, and are unrelated to the Control.Exception mechanism, which is tied to the IO monad.
The return function returns a normal value, while >>= exits on
the first exception. For a variant that continues after an error
and collects all the errors, see Errors.
A monad transformer that adds exceptions to other monads.
ExceptT constructs a monad parameterized over two things:
e - An arbitrary exception type.
m - The inner monad.
The monadic computations are a plain values. They are unrelated to the Control.Exception mechanism, which is tied to the IO monad.
The return function yields a computation that produces the given
value, while >>= sequences two subcomputations, exiting on the
first exception.
Instances90MonadRWS, FunctorT, TraversableT, DistributiveT, MFunctor, Generic1, …
MonadRWS r w s m => MonadRWS r w s (ExceptT e m)Defined in mtl-2.3.1 · Control.Monad.RWS.ClassFunctorT (ExceptT e)Defined in barbies-2.1.1.0 · Barbies.Internal.FunctorTTraversableT (ExceptT e)Defined in barbies-2.1.1.0 · Barbies.Internal.TraversableT(Eq e, Eq1 m) => Lifting Eq (ExceptT e m)Defined in constraints-0.14.4 · Data.Constraint.Lifting(Ord e, Ord1 m) => Lifting Ord (ExceptT e m)Defined in constraints-0.14.4 · Data.Constraint.Lifting(Read e, Read1 m) => Lifting Read (ExceptT e m)Defined in constraints-0.14.4 · Data.Constraint.Lifting(Show e, Show1 m) => Lifting Show (ExceptT e m)Defined in constraints-0.14.4 · Data.Constraint.LiftingDistributiveT (ExceptT e)Defined in barbies-2.1.1.0 · Barbies.Internal.DistributiveTMFunctor (ExceptT e)Defined in mmorph-1.2.2 · Control.Monad.MorphFunctor m => Generic1 (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ExceptMonadAccum w m => MonadAccum w (ExceptT e m)Defined in mtl-2.3.1 · Control.Monad.AccumThe accumulated value 'survives' an exception: even if the computation fails to deliver a result, we still have an accumulated value.
Monad m => MonadError e (ExceptT e m)Defined in mtl-2.3.1 · Control.Monad.Error.ClassMonadReader r m => MonadReader r (ExceptT e m)Defined in mtl-2.3.1 · Control.Monad.Reader.ClassMonadState s m => MonadState s (ExceptT e m)Defined in mtl-2.3.1 · Control.Monad.State.ClassMonadWriter w m => MonadWriter w (ExceptT e m)Defined in mtl-2.3.1 · Control.Monad.Writer.ClassMonadSelect r m => MonadSelect r (ExceptT e m)Defined in mtl-2.3.1 · Control.Monad.SelectMonadSplit g m => MonadSplit g (ExceptT e m)Defined in MonadRandom-0.6.2.1 · Control.Monad.Random.ClassMonadBase b m => MonadBase b (ExceptT e m)Defined in transformers-base-0.4.6.1 · Control.Monad.Base(Functor f, MonadFree f m) => MonadFree f (ExceptT e m)Defined in free-5.2 · Control.Monad.Free.ClassMonadBaseControl b m => MonadBaseControl b (ExceptT e m)Defined in monad-control-1.0.3.1 · Control.Monad.Trans.ControlMonadTrans (ExceptT e)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ExceptMMonad (ExceptT e)Defined in mmorph-1.2.2 · Control.Monad.MorphMonadTransControl (ExceptT e)Defined in monad-control-1.0.3.1 · Control.Monad.Trans.ControlMonadTransDistributive (ExceptT x)Defined in hedgehog-1.7 · Hedgehog.Internal.DistributiveMonad m => Monad (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ExceptFunctor m => Functor (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ExceptMonadFix m => MonadFix (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ExceptMonadFail m => MonadFail (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except(Functor m, Monad m) => Applicative (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ExceptFoldable f => Foldable (ExceptT e f)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ExceptTraversable f => Traversable (ExceptT e f)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except(Functor m, Monad m, Monoid e) => Alternative (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except(Monad m, Monoid e) => MonadPlus (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ExceptMonadIO m => MonadIO (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ExceptMonadZip m => MonadZip (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except(Eq e, Eq1 m) => Eq1 (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except(Ord e, Ord1 m) => Ord1 (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except(Read e, Read1 m) => Read1 (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except(Show e, Show1 m) => Show1 (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ExceptContravariant m => Contravariant (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ExceptMonadCont m => MonadCont (ExceptT e m)Defined in mtl-2.3.1 · Control.Monad.Cont.ClassMonadCatch m => MonadCatch (ExceptT e m)Defined in exceptions-0.10.11 · Control.Monad.CatchCatches exceptions from the base monad.
MonadMask m => MonadMask (ExceptT e m)Defined in exceptions-0.10.11 · Control.Monad.CatchMonadThrow m => MonadThrow (ExceptT e m)Defined in exceptions-0.10.11 · Control.Monad.CatchThrows exceptions into the base monad.
PrimMonad m => PrimMonad (ExceptT e m)Defined in primitive-0.9.1.0 · Control.Monad.PrimitiveMonadInterleave m => MonadInterleave (ExceptT e m)Defined in MonadRandom-0.6.2.1 · Control.Monad.Random.ClassMonadRandom m => MonadRandom (ExceptT e m)Defined in MonadRandom-0.6.2.1 · Control.Monad.Random.ClassDivisible m => Divisible (ExceptT e m)Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Divisible(Functor f, Monad f, Semigroup e) => Alt (ExceptT e f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt(Functor m, Monad m) => Apply (ExceptT e m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class(Functor m, Monad m) => Bind (ExceptT e m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.ClassDivise m => Divise (ExceptT e m)Defined in semigroupoids-6.0.2 · Data.Functor.Contravariant.Divise(Functor f, Monad f, Semigroup e, Monoid e) => Plus (ExceptT e f)Defined in semigroupoids-6.0.2 · Data.Functor.PlusInvariant m => Invariant (ExceptT e m)Defined in invariant-0.6.5 · Data.Functor.Invariantfrom the
transformerspackageMonadResource m => MonadResource (ExceptT e m)Defined in resourcet-1.3.0 · Control.Monad.Trans.Resource.InternalMonadGen m => MonadGen (ExceptT x m)Defined in hedgehog-1.7 · Hedgehog.Internal.GenMonadTest m => MonadTest (ExceptT x m)Defined in hedgehog-1.7 · Hedgehog.Internal.PropertyMonadQuote m => MonadQuote (ExceptT e m)Defined in plutus-core-1.70.0.0 · PlutusCore.QuoteLifting Functor (ExceptT e)Defined in constraints-0.14.4 · Data.Constraint.LiftingLifting Monad (ExceptT e)Defined in constraints-0.14.4 · Data.Constraint.LiftingLifting MonadFix (ExceptT e)Defined in constraints-0.14.4 · Data.Constraint.LiftingLifting MonadIO (ExceptT e)Defined in constraints-0.14.4 · Data.Constraint.LiftingLifting Foldable (ExceptT e)Defined in constraints-0.14.4 · Data.Constraint.LiftingLifting Traversable (ExceptT e)Defined in constraints-0.14.4 · Data.Constraint.LiftingLifting MonadCont (ExceptT w)Defined in constraints-0.14.4 · Data.Constraint.LiftingMonoid e => Lifting MonadPlus (ExceptT e)Defined in constraints-0.14.4 · Data.Constraint.LiftingEq e => Lifting Eq1 (ExceptT e)Defined in constraints-0.14.4 · Data.Constraint.LiftingOrd e => Lifting Ord1 (ExceptT e)Defined in constraints-0.14.4 · Data.Constraint.LiftingRead e => Lifting Read1 (ExceptT e)Defined in constraints-0.14.4 · Data.Constraint.LiftingShow e => Lifting Show1 (ExceptT e)Defined in constraints-0.14.4 · Data.Constraint.LiftingLifting (MonadReader r) (ExceptT e)Defined in constraints-0.14.4 · Data.Constraint.LiftingLifting (MonadState s) (ExceptT e)Defined in constraints-0.14.4 · Data.Constraint.LiftingZoom m n s t => Zoom (ExceptT e m) (ExceptT e n) s tDefined in lens-5.3.6 · Control.Lens.ZoomLifting (MonadRWS r w s) (ExceptT e)Defined in constraints-0.14.4 · Data.Constraint.Lifting(Eq e, Eq1 m, Eq a) => Eq (ExceptT e m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except(Ord e, Ord1 m, Ord a) => Ord (ExceptT e m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except(Read e, Read1 m, Read a) => Read (ExceptT e m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except(Show e, Show1 m, Show a) => Show (ExceptT e m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ExceptGeneric (ExceptT e m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.ExceptWrapped (ExceptT e m a)Defined in lens-5.3.6 · Control.Lens.Wrappedt ~ ExceptT e' m' a' => Rewrapped (ExceptT e m a) tDefined in lens-5.3.6 · Control.Lens.Wrappedtype Rep (ExceptT e m a) = D1 ('MetaDataDefined in transformers-0.6.1.2 · Control.Monad.Trans.Except"ExceptT"
"Control.Monad.Trans.Except"
"transformers-0.6.1.2-8201"
'True) (C1 ('MetaCons"ExceptT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (m (Either e a)))))type Rep1 (ExceptT e m) = D1 ('MetaDataDefined in transformers-0.6.1.2 · Control.Monad.Trans.Except"ExceptT"
"Control.Monad.Trans.Except"
"transformers-0.6.1.2-8201"
'True) (C1 ('MetaCons"ExceptT"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (m :.: Rec1 (Either e))))type PrimState (ExceptT e m) = PrimState mDefined in primitive-0.9.1.0 · Control.Monad.Primitivetype Unwrapped (ExceptT e m a) = m (Either e a)Defined in lens-5.3.6 · Control.Lens.Wrappedtype Zoomed (ExceptT e m) = FocusingErr e (Zoomed m)Defined in lens-5.3.6 · Control.Lens.Zoomtype StM (ExceptT e m) a = ComposeSt (ExceptT e) m aDefined in monad-control-1.0.3.1 · Control.Monad.Trans.Controltype StT (ExceptT e) a = Either e aDefined in monad-control-1.0.3.1 · Control.Monad.Trans.Controltype GenBase (ExceptT x m) = ExceptT x (GenBase m)Defined in hedgehog-1.7 · Hedgehog.Internal.Gentype Transformer f (ExceptT x) m = (Monad m, Monad (f m), Monad (ExceptT x m), Monad (f (ExceptT x m)), MonadTrans f, MFunctor f)Defined in hedgehog-1.7 · Hedgehog.Internal.Distributive