monadology-0.3: The best ideas in monad-related classes and types.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Monad.Ology.Specific.StackT

Synopsis

Documentation

witTransStackDict :: forall cm tt m. cm m => ListType (Compose Dict (TransConstraint cm)) tt -> Dict (cm (ApplyStack tt m)) Source #

transStackDict :: forall cm tt m. (IsStack (TransConstraint cm) tt, cm m) => Dict (cm (ApplyStack tt m)) Source #

newtype StackT (tt :: [TransKind]) m a Source #

A monad transformer that is the composition of a list of monad transformers.

Constructors

MkStackT 

Fields

Instances

Instances details
(IsStack (TransConstraint Monad) tt, IsStack (TransConstraint MonadFail) tt, IsStack MonadTrans tt) => TransConstraint MonadFail (StackT tt) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadFail m => Dict (MonadFail (StackT tt m)) Source #

(IsStack (TransConstraint Monad) tt, IsStack (TransConstraint MonadFix) tt) => TransConstraint MonadFix (StackT tt) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadFix m => Dict (MonadFix (StackT tt m)) Source #

(IsStack (TransConstraint Monad) tt, IsStack (TransConstraint MonadIO) tt) => TransConstraint MonadIO (StackT tt) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadIO m => Dict (MonadIO (StackT tt m)) Source #

IsStack (TransConstraint Monad) tt => TransConstraint Monad (StackT tt) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Methods

hasTransConstraint :: forall (m :: Type -> Type). Monad m => Dict (Monad (StackT tt m)) Source #

(IsStack (TransConstraint Monad) tt, IsStack (TransConstraint MonadPlus) tt) => TransConstraint MonadPlus (StackT tt) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadPlus m => Dict (MonadPlus (StackT tt m)) Source #

MonadTransStackTunnel tt => MonadTransHoist (StackT tt) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Methods

hoist :: forall (m1 :: Type -> Type) (m2 :: Type -> Type). (Monad m1, Monad m2) => (m1 --> m2) -> StackT tt m1 --> StackT tt m2 Source #

MonadTransStackTunnel tt => MonadTransTunnel (StackT tt) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Associated Types

type Tunnel (StackT tt) :: Type -> Type Source #

Methods

tunnel :: Monad m => ((forall (m1 :: Type -> Type) a. Monad m1 => StackT tt m1 a -> m1 (Tunnel (StackT tt) a)) -> m (Tunnel (StackT tt) r)) -> StackT tt m r Source #

MonadTransStackUnlift tt => MonadTransUnlift (StackT tt) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Methods

liftWithUnlift :: MonadIO m => (Unlift MonadTunnelIO (StackT tt) -> m r) -> StackT tt m r Source #

getDiscardingUnlift :: forall (m :: Type -> Type). Monad m => StackT tt m (WUnlift MonadTunnelIO (StackT tt)) Source #

(IsStack (TransConstraint Monad) tt, IsStack MonadTrans tt) => MonadTrans (StackT tt) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Methods

lift :: Monad m => m a -> StackT tt m a #

(IsStack (TransConstraint Monad) tt, IsStack MonadTrans tt, MonadFail m) => MonadFail (StackT tt m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Methods

fail :: String -> StackT tt m a #

(IsStack (TransConstraint Monad) tt, IsStack (TransConstraint MonadFix) tt, MonadFix m) => MonadFix (StackT tt m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Methods

mfix :: (a -> StackT tt m a) -> StackT tt m a #

(IsStack (TransConstraint Monad) tt, IsStack (TransConstraint MonadIO) tt, MonadIO m) => MonadIO (StackT tt m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Methods

liftIO :: IO a -> StackT tt m a #

(IsStack (TransConstraint Monad) tt, IsStack (TransConstraint MonadPlus) tt, MonadPlus m) => Alternative (StackT tt m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Methods

empty :: StackT tt m a #

(<|>) :: StackT tt m a -> StackT tt m a -> StackT tt m a #

some :: StackT tt m a -> StackT tt m [a] #

many :: StackT tt m a -> StackT tt m [a] #

(IsStack (TransConstraint Monad) tt, Monad m) => Applicative (StackT tt m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Methods

pure :: a -> StackT tt m a #

(<*>) :: StackT tt m (a -> b) -> StackT tt m a -> StackT tt m b #

liftA2 :: (a -> b -> c) -> StackT tt m a -> StackT tt m b -> StackT tt m c #

(*>) :: StackT tt m a -> StackT tt m b -> StackT tt m b #

(<*) :: StackT tt m a -> StackT tt m b -> StackT tt m a #

(IsStack (TransConstraint Monad) tt, Monad m) => Functor (StackT tt m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Methods

fmap :: (a -> b) -> StackT tt m a -> StackT tt m b #

(<$) :: a -> StackT tt m b -> StackT tt m a #

(IsStack (TransConstraint Monad) tt, Monad m) => Monad (StackT tt m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Methods

(>>=) :: StackT tt m a -> (a -> StackT tt m b) -> StackT tt m b #

(>>) :: StackT tt m a -> StackT tt m b -> StackT tt m b #

return :: a -> StackT tt m a #

(IsStack (TransConstraint Monad) tt, IsStack (TransConstraint MonadPlus) tt, MonadPlus m) => MonadPlus (StackT tt m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

Methods

mzero :: StackT tt m a #

mplus :: StackT tt m a -> StackT tt m a -> StackT tt m a #

type Tunnel (StackT tt) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

type Tunnel (StackT tt)

stackHoist :: forall tt ma mb. (MonadTransStackTunnel tt, Monad ma, Monad mb) => (ma --> mb) -> ApplyStack tt ma --> ApplyStack tt mb Source #

class (MonadTransTunnel t, c (Tunnel t)) => WithTunnelConstraint c t Source #

Instances

Instances details
(MonadTransTunnel t, c (Tunnel t)) => WithTunnelConstraint c t Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StackT

transStackExcept :: forall tt m e a. (MonadTransStackTunnel tt, Monad m) => ApplyStack tt (ExceptT e m) a -> ApplyStack tt m (Either e a) Source #

stackBackHoist :: forall tt ma mb. (MonadTransStackUnlift tt, Monad ma, Monad mb) => (ma -/-> mb) -> ApplyStack tt ma -/-> ApplyStack tt mb Source #

stackConcatFst :: forall tt1 tt2 m. (MonadTransStackUnlift tt1, MonadTransStackUnlift tt2, Monad m) => ApplyStack tt1 m --> ApplyStack (Concat tt1 tt2) m Source #

stackConcatSnd :: forall tt1 tt2 m. (MonadTransStackUnlift tt1, MonadTransStackUnlift tt2, Monad m) => ApplyStack tt2 m --> ApplyStack (Concat tt1 tt2) m Source #

stackCommute :: forall tta ttb m r. (MonadTransStackUnlift tta, MonadTransStackUnlift ttb, MonadTunnelIO m) => ApplyStack tta (ApplyStack ttb m) r -> ApplyStack ttb (ApplyStack tta m) r Source #

transStackConcatRefl :: forall (tt1 :: [TransKind]) (tt2 :: [TransKind]) m. MonadTransStackUnlift tt1 => ApplyStack (Concat tt1 tt2) m :~: ApplyStack tt1 (ApplyStack tt2 m) Source #

type StackUnlift (tt :: [TransKind]) = forall m. MonadUnliftIO m => ApplyStack tt m --> m Source #

newtype WStackUnlift (tt :: [TransKind]) Source #

Constructors

MkWStackUnlift 

stackLiftWithStackUnlift :: forall tt m r. (MonadTransStackUnlift tt, MonadIO m) => (StackUnlift tt -> m r) -> ApplyStack tt m r Source #