Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module defines the core data type of Ether, TaggedTrans
,
and a bunch of instances for it. TaggedTrans
attaches a tag to
an existing monad transformer.
- newtype TaggedTrans tag trans m a = TaggedTrans (trans m a)
- pack :: trans m a -> TaggedTrans tag trans m a
- unpack :: TaggedTrans tag trans m a -> trans m a
Documentation
newtype TaggedTrans tag trans m a Source #
Tagged monad transformer.
TaggedTrans (trans m a) |
(Monad m, (~) * e e') => MonadExcept k tag e (ExceptT k tag e' m) Source # | |
(Monad m, (~) * r r') => MonadReader k tag r (ReaderT k tag r' m) Source # | |
(Monad m, (~) * s s') => MonadState k tag s (StateT k tag s' m) Source # | |
(Monad m, (~) * s s') => MonadState k tag s (StateT k tag s' m) Source # | |
(Monoid w, Monad m, (~) * w w') => MonadWriter k tag w (WriterT k tag w' m) Source # | |
(MonadBase b m, MonadTrans trans, MonadApplicative (trans m)) => MonadBase b (TaggedTrans * k tag trans m) Source # | |
(MonadBaseControl b m, MonadTransControl trans, MonadApplicative (trans m)) => MonadBaseControl b (TaggedTrans * k tag trans m) Source # | |
(MonadError e m, LiftCatch trans, Monad (trans m)) => MonadError e (TaggedTrans * k tag trans m) Source # | |
(MonadReader r m, LiftLocal trans, Monad (trans m)) => MonadReader r (TaggedTrans * k tag trans m) Source # | |
(MonadState s m, MonadTrans trans, Monad (trans m)) => MonadState s (TaggedTrans * k tag trans m) Source # | |
(MonadWriter w m, LiftListen trans, LiftPass trans, Monad (trans m)) => MonadWriter w (TaggedTrans * k tag trans m) Source # | |
MFunctor trans => MFunctor (TaggedTrans * k tag trans) Source # | |
MMonad trans => MMonad (TaggedTrans * k tag trans) Source # | |
MonadTrans trans => MonadTrans (TaggedTrans * k tag trans) Source # | |
MonadTransControl trans => MonadTransControl (TaggedTrans * k tag trans) Source # | |
LiftCallCC trans => LiftCallCC (TaggedTrans * k tag trans) Source # | |
LiftCatch trans => LiftCatch (TaggedTrans * k tag trans) Source # | |
LiftListen trans => LiftListen (TaggedTrans * k tag trans) Source # | |
LiftLocal trans => LiftLocal (TaggedTrans * k tag trans) Source # | |
LiftPass trans => LiftPass (TaggedTrans * k tag trans) Source # | |
Monad (trans m) => Monad (TaggedTrans * k tag trans m) Source # | |
Functor (trans m) => Functor (TaggedTrans * k tag trans m) Source # | |
MonadFix (trans m) => MonadFix (TaggedTrans * k tag trans m) Source # | |
Applicative (trans m) => Applicative (TaggedTrans * k tag trans m) Source # | |
MonadIO (trans m) => MonadIO (TaggedTrans * k tag trans m) Source # | |
Alternative (trans m) => Alternative (TaggedTrans * k tag trans m) Source # | |
MonadPlus (trans m) => MonadPlus (TaggedTrans * k tag trans m) Source # | |
MonadThrow (trans m) => MonadThrow (TaggedTrans * k tag trans m) Source # | |
MonadCatch (trans m) => MonadCatch (TaggedTrans * k tag trans m) Source # | |
MonadMask (trans m) => MonadMask (TaggedTrans * k tag trans m) Source # | |
(MonadCont m, LiftCallCC trans, Monad (trans m)) => MonadCont (TaggedTrans * k tag trans m) Source # | |
Generic (TaggedTrans k1 k tag trans m a) Source # | |
type StT (TaggedTrans * k tag trans) a Source # | |
type StT (TaggedTrans * k tag trans) a Source # | |
type StM (TaggedTrans * k tag trans m) a Source # | |
type Rep (TaggedTrans k1 k tag trans m a) Source # | |
pack :: trans m a -> TaggedTrans tag trans m a Source #
Type-restricted coerce
.
unpack :: TaggedTrans tag trans m a -> trans m a Source #
Type-restricted coerce
.