Safe Haskell | None |
---|---|
Language | Haskell98 |
Short-circuiting monad transformer and the corresponding generalizing monad type class.
- class Monad μ => MonadFinish f μ | μ -> f where
- type Finish f α = FinishT f Identity α
- runFinish :: Finish f α -> Either f α
- runFinish' :: Finish α α -> α
- newtype FinishT f μ α :: * -> (* -> *) -> * -> * = FinishT {
- runFinishT :: μ (Either f α)
- runFinishT' :: Monad μ => FinishT α μ α -> μ α
- module Control.Monad
- module Control.Monad.Fix
- module Control.Monad.Trans
Documentation
class Monad μ => MonadFinish f μ | μ -> f where Source #
Class of monads that support short-circuiting.
Short-circuit the computation with the provided value.
finish f >>= rest = finish f
MonadFinish f μ => MonadFinish f (ListT μ) Source # | |
MonadFinish f μ => MonadFinish f (MaybeT μ) Source # | |
(MonadFinish f μ, Monoid w) => MonadFinish f (WriterT w μ) Source # | |
(MonadFinish f μ, Monoid w) => MonadFinish f (WriterT w μ) Source # | |
MonadFinish f μ => MonadFinish f (StateT s μ) Source # | |
MonadFinish f μ => MonadFinish f (StateT s μ) Source # | |
MonadFinish f μ => MonadFinish f (AbortT e μ) Source # | |
MonadFinish f μ => MonadFinish f (ExceptT e μ) Source # | |
(MonadFinish f μ, Error e) => MonadFinish f (ErrorT e μ) Source # | |
MonadFinish f μ => MonadFinish f (IdentityT * μ) Source # | |
Monad μ => MonadFinish f (FinishT f μ) Source # | |
MonadFinish f μ => MonadFinish f (ReaderT * r μ) Source # | |
MonadFinish f μ => MonadFinish f (ContT * r μ) Source # | |
(MonadFinish f μ, Monoid w) => MonadFinish f (RWST r w s μ) Source # | |
(MonadFinish f μ, Monoid w) => MonadFinish f (RWST r w s μ) Source # | |
runFinish' :: Finish α α -> α #
runFinishT'
specialized to Finish
.
newtype FinishT f μ α :: * -> (* -> *) -> * -> * #
A monad transformer that extends monad μ
with the ability
to short-circuit computations with a value of type f
.
runFinishT
$ do someStuffwhen
condition $finish
reason otherwiseContinue
FinishT | |
|
MonadBase η μ => MonadBase η (FinishT f μ) | |
MonadBaseControl η μ => MonadBaseControl η (FinishT e μ) | |
Monad μ => MonadFinish f (FinishT f μ) Source # | |
MonadTrans (FinishT f) | |
MonadTransControl (FinishT f) | |
BindTrans (FinishT f) | |
Monad μ => Monad (FinishT f μ) | |
Functor μ => Functor (FinishT f μ) | |
MonadFix μ => MonadFix (FinishT f μ) | |
MonadFail μ => MonadFail (FinishT f μ) | |
(Functor μ, Monad μ) => Applicative (FinishT f μ) | |
(Eq f, Eq1 μ) => Eq1 (FinishT f μ) | |
(Ord f, Ord1 μ) => Ord1 (FinishT f μ) | |
(Read f, Read1 μ) => Read1 (FinishT f μ) | |
(Show f, Show1 μ) => Show1 (FinishT f μ) | |
MonadZip μ => MonadZip (FinishT f μ) | |
MonadIO μ => MonadIO (FinishT f μ) | |
Pointed μ => Pointed (FinishT f μ) | |
(Functor μ, Monad μ) => Apply (FinishT f μ) | |
(Functor μ, Monad μ) => Bind (FinishT f μ) | |
(Eq f, Eq1 μ, Eq α) => Eq (FinishT f μ α) | |
(Ord f, Ord1 μ, Ord α) => Ord (FinishT f μ α) | |
(Read f, Read1 μ, Read α) => Read (FinishT f μ α) | |
(Show f, Show1 μ, Show α) => Show (FinishT f μ α) | |
type StT (FinishT f) α | |
type StM (FinishT e μ) α | |
runFinishT' :: Monad μ => FinishT α μ α -> μ α #
A version of runFinishT
for the cases where you don't need to
distinguish between short-circuits and regular computation results.
module Control.Monad
module Control.Monad.Fix
module Control.Monad.Trans