| Safe Haskell | None |
|---|---|
| Language | Haskell98 |
Control.Monad.Finish
Description
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.
Minimal complete definition
Methods
Short-circuit the computation with the provided value.
finish f >>= rest = finish f
Instances
| 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 someStuffwhencondition $finishreason otherwiseContinue
Constructors
| FinishT | |
Fields
| |
Instances
| 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