Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data MsgOrRes
- data family Effect (effKind :: Type) :: effKind -> MsgOrRes -> Type
- class Monad m => MonadEffect effKind m where
- newtype EffectWithKind effKind m = EffectWithKind {
- getEffectWithKind :: forall method. Effect effKind method Msg -> m (Effect effKind method Res)
- newtype EffectHandler effKind m a = EffectHandler {
- unpackEffectHandler :: ReaderT (EffectWithKind effKind m) m a
- handleEffect :: (forall method. Effect effKind method Msg -> m (Effect effKind method Res)) -> EffectHandler effKind m a -> m a
- type family MonadEffects effs m :: Constraint where ...
Documentation
class Monad m => MonadEffect effKind m where Source #
effect :: Effect effKind method Msg -> m (Effect effKind method Res) Source #
Use the effect described by method
.
(MonadEffect method m, MonadTrans t, Monad (t m)) => MonadEffect method (t m) Source # | |
Monad m => MonadEffect NonDeterministic (ListT m) Source # | |
Monad m => MonadEffect effKind (EffectHandler effKind m) Source # | |
TypeError Constraint (UnhandledError a b) => MonadEffect (Signal a b) IO Source # | |
Monad m => MonadEffect (Signal a b) (MaybeT m) Source # | |
(Monad m, (~) * b c) => MonadEffect (Signal a c) (EffectHandler (Signal a b) m) Source # | |
(Show e, Monad m) => MonadEffect (Signal e b) (ExceptT SomeSignal m) Source # | |
Monad m => MonadEffect (Signal e b) (ExceptT e m) Source # | |
Monad m => MonadEffect (State * s) (StateT s m) Source # | |
newtype EffectWithKind effKind m Source #
EffectWithKind | |
|
newtype EffectHandler effKind m a Source #
The EffectHandler
is really just a ReaderT
carrying around the function that knows how to
handle the effect.
EffectHandler | |
|
handleEffect :: (forall method. Effect effKind method Msg -> m (Effect effKind method Res)) -> EffectHandler effKind m a -> m a Source #
Handle the effect described by effKind
.
type family MonadEffects effs m :: Constraint where ... Source #
MonadEffects '[] m = () | |
MonadEffects (eff ': effs) m = (MonadEffect eff m, MonadEffects effs m) |