ether-0.4.1.0: Monad transformers and classes

Safe HaskellNone
LanguageHaskell2010

Control.Monad.Trans.Ether.Tagged

Description

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.

Synopsis

Documentation

newtype TaggedTrans tag trans m a Source #

Tagged monad transformer.

Constructors

TaggedTrans (trans m a) 

Instances

(Monad m, (~) * e e') => MonadExcept k tag e (ExceptT k tag e' m) Source # 

Methods

throw :: proxy e -> ExceptT k tag e' m -> m a Source #

catch :: proxy e -> m a -> (ExceptT k tag e' m -> m a) -> m a Source #

(Monad m, (~) * r r') => MonadReader k tag r (ReaderT k tag r' m) Source # 

Methods

ask :: proxy r -> m (ReaderT k tag r' m) Source #

local :: proxy r -> (ReaderT k tag r' m -> ReaderT k tag r' m) -> m a -> m a Source #

reader :: proxy r -> (ReaderT k tag r' m -> a) -> m a Source #

(Monad m, (~) * s s') => MonadState k tag s (StateT k tag s' m) Source # 

Methods

get :: proxy s -> m (StateT k tag s' m) Source #

put :: proxy s -> StateT k tag s' m -> m () Source #

state :: proxy s -> (StateT k tag s' m -> (a, StateT k tag s' m)) -> m a Source #

(Monad m, (~) * s s') => MonadState k tag s (StateT k tag s' m) Source # 

Methods

get :: proxy s -> m (StateT k tag s' m) Source #

put :: proxy s -> StateT k tag s' m -> m () Source #

state :: proxy s -> (StateT k tag s' m -> (a, StateT k tag s' m)) -> m a Source #

(Monoid w, Monad m, (~) * w w') => MonadWriter k tag w (WriterT k tag w' m) Source # 

Methods

writer :: proxy w -> (a, WriterT k tag w' m) -> m a Source #

tell :: proxy w -> WriterT k tag w' m -> m () Source #

listen :: proxy w -> m a -> m (a, WriterT k tag w' m) Source #

pass :: proxy w -> m (a, WriterT k tag w' m -> WriterT k tag w' m) -> m a Source #

(MonadBase b m, MonadTrans trans, MonadApplicative (trans m)) => MonadBase b (TaggedTrans * k tag trans m) Source # 

Methods

liftBase :: b α -> TaggedTrans * k tag trans m α #

(MonadBaseControl b m, MonadTransControl trans, MonadApplicative (trans m)) => MonadBaseControl b (TaggedTrans * k tag trans m) Source # 

Associated Types

type StM (TaggedTrans * k tag trans m :: * -> *) a :: * #

Methods

liftBaseWith :: (RunInBase (TaggedTrans * k tag trans m) b -> b a) -> TaggedTrans * k tag trans m a #

restoreM :: StM (TaggedTrans * k tag trans m) a -> TaggedTrans * k tag trans m a #

(MonadError e m, LiftCatch trans, Monad (trans m)) => MonadError e (TaggedTrans * k tag trans m) Source # 

Methods

throwError :: e -> TaggedTrans * k tag trans m a #

catchError :: TaggedTrans * k tag trans m a -> (e -> TaggedTrans * k tag trans m a) -> TaggedTrans * k tag trans m a #

(MonadReader r m, LiftLocal trans, Monad (trans m)) => MonadReader r (TaggedTrans * k tag trans m) Source # 

Methods

ask :: TaggedTrans * k tag trans m r #

local :: (r -> r) -> TaggedTrans * k tag trans m a -> TaggedTrans * k tag trans m a #

reader :: (r -> a) -> TaggedTrans * k tag trans m a #

(MonadState s m, MonadTrans trans, Monad (trans m)) => MonadState s (TaggedTrans * k tag trans m) Source # 

Methods

get :: TaggedTrans * k tag trans m s #

put :: s -> TaggedTrans * k tag trans m () #

state :: (s -> (a, s)) -> TaggedTrans * k tag trans m a #

(MonadWriter w m, LiftListen trans, LiftPass trans, Monad (trans m)) => MonadWriter w (TaggedTrans * k tag trans m) Source # 

Methods

writer :: (a, w) -> TaggedTrans * k tag trans m a #

tell :: w -> TaggedTrans * k tag trans m () #

listen :: TaggedTrans * k tag trans m a -> TaggedTrans * k tag trans m (a, w) #

pass :: TaggedTrans * k tag trans m (a, w -> w) -> TaggedTrans * k tag trans m a #

MFunctor trans => MFunctor (TaggedTrans * k tag trans) Source # 

Methods

hoist :: Monad m => (forall a. m a -> n a) -> TaggedTrans * k tag trans m b -> TaggedTrans * k tag trans n b #

MMonad trans => MMonad (TaggedTrans * k tag trans) Source # 

Methods

embed :: Monad n => (forall a. m a -> TaggedTrans * k tag trans n a) -> TaggedTrans * k tag trans m b -> TaggedTrans * k tag trans n b #

MonadTrans trans => MonadTrans (TaggedTrans * k tag trans) Source # 

Methods

lift :: Monad m => m a -> TaggedTrans * k tag trans m a #

MonadTransControl trans => MonadTransControl (TaggedTrans * k tag trans) Source # 

Associated Types

type StT (TaggedTrans * k tag trans :: (* -> *) -> * -> *) a :: * #

Methods

liftWith :: Monad m => (Run (TaggedTrans * k tag trans) -> m a) -> TaggedTrans * k tag trans m a #

restoreT :: Monad m => m (StT (TaggedTrans * k tag trans) a) -> TaggedTrans * k tag trans m a #

LiftCallCC trans => LiftCallCC (TaggedTrans * k tag trans) Source # 

Methods

liftCallCC :: Monad m => CallCC m (StT (TaggedTrans * k tag trans) a) (StT (TaggedTrans * k tag trans) b) -> CallCC (TaggedTrans * k tag trans m) a b #

liftCallCC' :: Monad m => CallCC m (StT (TaggedTrans * k tag trans) a) (StT (TaggedTrans * k tag trans) b) -> CallCC (TaggedTrans * k tag trans m) a b #

LiftCatch trans => LiftCatch (TaggedTrans * k tag trans) Source # 

Methods

liftCatch :: Monad m => Catch * e m (StT (TaggedTrans * k tag trans) a) -> Catch * e (TaggedTrans * k tag trans m) a #

LiftListen trans => LiftListen (TaggedTrans * k tag trans) Source # 

Methods

liftListen :: Monad m => Listen w m (StT (TaggedTrans * k tag trans) a) -> Listen w (TaggedTrans * k tag trans m) a #

LiftLocal trans => LiftLocal (TaggedTrans * k tag trans) Source # 

Methods

liftLocal :: Monad m => m r -> (forall a. Local r m a) -> forall a. Local r (TaggedTrans * k tag trans m) a #

LiftPass trans => LiftPass (TaggedTrans * k tag trans) Source # 

Methods

liftPass :: Monad m => Pass w m (StT (TaggedTrans * k tag trans) a) -> Pass w (TaggedTrans * k tag trans m) a #

Monad (trans m) => Monad (TaggedTrans * k tag trans m) Source # 

Methods

(>>=) :: TaggedTrans * k tag trans m a -> (a -> TaggedTrans * k tag trans m b) -> TaggedTrans * k tag trans m b #

(>>) :: TaggedTrans * k tag trans m a -> TaggedTrans * k tag trans m b -> TaggedTrans * k tag trans m b #

return :: a -> TaggedTrans * k tag trans m a #

fail :: String -> TaggedTrans * k tag trans m a #

Functor (trans m) => Functor (TaggedTrans * k tag trans m) Source # 

Methods

fmap :: (a -> b) -> TaggedTrans * k tag trans m a -> TaggedTrans * k tag trans m b #

(<$) :: a -> TaggedTrans * k tag trans m b -> TaggedTrans * k tag trans m a #

MonadFix (trans m) => MonadFix (TaggedTrans * k tag trans m) Source # 

Methods

mfix :: (a -> TaggedTrans * k tag trans m a) -> TaggedTrans * k tag trans m a #

Applicative (trans m) => Applicative (TaggedTrans * k tag trans m) Source # 

Methods

pure :: a -> TaggedTrans * k tag trans m a #

(<*>) :: TaggedTrans * k tag trans m (a -> b) -> TaggedTrans * k tag trans m a -> TaggedTrans * k tag trans m b #

(*>) :: TaggedTrans * k tag trans m a -> TaggedTrans * k tag trans m b -> TaggedTrans * k tag trans m b #

(<*) :: TaggedTrans * k tag trans m a -> TaggedTrans * k tag trans m b -> TaggedTrans * k tag trans m a #

MonadIO (trans m) => MonadIO (TaggedTrans * k tag trans m) Source # 

Methods

liftIO :: IO a -> TaggedTrans * k tag trans m a #

Alternative (trans m) => Alternative (TaggedTrans * k tag trans m) Source # 

Methods

empty :: TaggedTrans * k tag trans m a #

(<|>) :: TaggedTrans * k tag trans m a -> TaggedTrans * k tag trans m a -> TaggedTrans * k tag trans m a #

some :: TaggedTrans * k tag trans m a -> TaggedTrans * k tag trans m [a] #

many :: TaggedTrans * k tag trans m a -> TaggedTrans * k tag trans m [a] #

MonadPlus (trans m) => MonadPlus (TaggedTrans * k tag trans m) Source # 

Methods

mzero :: TaggedTrans * k tag trans m a #

mplus :: TaggedTrans * k tag trans m a -> TaggedTrans * k tag trans m a -> TaggedTrans * k tag trans m a #

MonadThrow (trans m) => MonadThrow (TaggedTrans * k tag trans m) Source # 

Methods

throwM :: Exception e => e -> TaggedTrans * k tag trans m a #

MonadCatch (trans m) => MonadCatch (TaggedTrans * k tag trans m) Source # 

Methods

catch :: Exception e => TaggedTrans * k tag trans m a -> (e -> TaggedTrans * k tag trans m a) -> TaggedTrans * k tag trans m a #

MonadMask (trans m) => MonadMask (TaggedTrans * k tag trans m) Source # 

Methods

mask :: ((forall a. TaggedTrans * k tag trans m a -> TaggedTrans * k tag trans m a) -> TaggedTrans * k tag trans m b) -> TaggedTrans * k tag trans m b #

uninterruptibleMask :: ((forall a. TaggedTrans * k tag trans m a -> TaggedTrans * k tag trans m a) -> TaggedTrans * k tag trans m b) -> TaggedTrans * k tag trans m b #

(MonadCont m, LiftCallCC trans, Monad (trans m)) => MonadCont (TaggedTrans * k tag trans m) Source # 

Methods

callCC :: ((a -> TaggedTrans * k tag trans m b) -> TaggedTrans * k tag trans m a) -> TaggedTrans * k tag trans m a #

Generic (TaggedTrans k1 k tag trans m a) Source # 

Associated Types

type Rep (TaggedTrans k1 k tag trans m a) :: * -> * #

Methods

from :: TaggedTrans k1 k tag trans m a -> Rep (TaggedTrans k1 k tag trans m a) x #

to :: Rep (TaggedTrans k1 k tag trans m a) x -> TaggedTrans k1 k tag trans m a #

type StT (TaggedTrans * k tag trans) a Source # 
type StT (TaggedTrans * k tag trans) a = StT trans a
type StT (TaggedTrans * k tag trans) a Source # 
type StT (TaggedTrans * k tag trans) a = StT trans a
type StM (TaggedTrans * k tag trans m) a Source # 
type StM (TaggedTrans * k tag trans m) a = ComposeSt trans m a
type Rep (TaggedTrans k1 k tag trans m a) Source # 
type Rep (TaggedTrans k1 k tag trans m a) = D1 (MetaData "TaggedTrans" "Control.Monad.Trans.Ether.Tagged" "ether-0.4.1.0-Ct4ST2coiPMBtQpHrUtzac" True) (C1 (MetaCons "TaggedTrans" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (trans m a))))

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.