| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Control.Effects
- type family EffectMsg eff :: *
- type family EffectRes eff :: *
- class Monad m => MonadEffect eff m where
- newtype EffectHandler eff m a = EffectHandler {
- unpackEffectHandler :: ReaderT (EffectMsg eff -> m (EffectRes eff)) m a
- handleEffect :: (EffectMsg eff -> m (EffectRes eff)) -> EffectHandler eff m a -> m a
- module Control.Effects1
Documentation
class Monad m => MonadEffect eff m where Source #
Minimal complete definition
Methods
effect :: proxy eff -> EffectMsg eff -> m (EffectRes eff) Source #
Use the effect described by eff.
Instances
| (MonadEffect eff m, MonadTrans t, Monad (t m)) => MonadEffect eff (t m) Source # | |
| Monad m => MonadEffect eff (EffectHandler eff m) Source # | |
| (Monad m, (~) * a b) => MonadEffect (Early a) (ExceptT (Early b) m) Source # | |
newtype EffectHandler eff m a Source #
The EffectHandler is really just a ReaderT carrying around the function that knows how to
handle the effect.
Constructors
| EffectHandler | |
Fields
| |
Instances
| MonadBase b m => MonadBase b (EffectHandler eff m) Source # | |
| MonadBaseControl b m => MonadBaseControl b (EffectHandler eff m) Source # | |
| MonadReader s m => MonadReader s (EffectHandler eff m) Source # | |
| MonadState s m => MonadState s (EffectHandler eff m) Source # | |
| Monad m => MonadEffect eff (EffectHandler eff m) Source # | |
| MonadTrans (EffectHandler eff) Source # | |
| RunnableTrans (EffectHandler eff) Source # | |
| Monad m => Monad (EffectHandler eff m) Source # | |
| Functor m => Functor (EffectHandler eff m) Source # | |
| Applicative m => Applicative (EffectHandler eff m) Source # | |
| MonadIO m => MonadIO (EffectHandler eff m) Source # | |
| MonadRandom m => MonadRandom (EffectHandler eff m) Source # | |
| Alternative m => Alternative (EffectHandler eff m) Source # | |
| MonadThrow m => MonadThrow (EffectHandler eff m) Source # | |
| MonadCatch m => MonadCatch (EffectHandler eff m) Source # | |
| type TransformerState (EffectHandler eff) m Source # | |
| type TransformerResult (EffectHandler eff) m a Source # | |
| type StM (EffectHandler eff m) a Source # | |
handleEffect :: (EffectMsg eff -> m (EffectRes eff)) -> EffectHandler eff m a -> m a Source #
Handle the effect described by eff.
module Control.Effects1