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

Control.Monad.Ology.Specific.ComposeT

Synopsis

Documentation

newtype ComposeT (outerT :: TransKind) (innerT :: TransKind) (m :: Type -> Type) (a :: Type) Source #

Compose two monad transformers.

Constructors

MkComposeT 

Fields

Instances

Instances details
(TransConstraint MonadFail outerT, TransConstraint Monad innerT, TransConstraint MonadFail innerT) => TransConstraint MonadFail (ComposeT outerT innerT) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadFail m => Dict (MonadFail (ComposeT outerT innerT m)) Source #

(TransConstraint MonadFix outerT, TransConstraint Monad innerT, TransConstraint MonadFix innerT) => TransConstraint MonadFix (ComposeT outerT innerT) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadFix m => Dict (MonadFix (ComposeT outerT innerT m)) Source #

(TransConstraint MonadIO outerT, TransConstraint Monad innerT, TransConstraint MonadIO innerT) => TransConstraint MonadIO (ComposeT outerT innerT) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadIO m => Dict (MonadIO (ComposeT outerT innerT m)) Source #

(TransConstraint Applicative outerT, TransConstraint Applicative innerT) => TransConstraint Applicative (ComposeT outerT innerT) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

hasTransConstraint :: forall (m :: Type -> Type). Applicative m => Dict (Applicative (ComposeT outerT innerT m)) Source #

(TransConstraint Functor outerT, TransConstraint Functor innerT) => TransConstraint Functor (ComposeT outerT innerT) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

hasTransConstraint :: forall (m :: Type -> Type). Functor m => Dict (Functor (ComposeT outerT innerT m)) Source #

(TransConstraint Monad outerT, TransConstraint Monad innerT) => TransConstraint Monad (ComposeT outerT innerT) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

hasTransConstraint :: forall (m :: Type -> Type). Monad m => Dict (Monad (ComposeT outerT innerT m)) Source #

(TransConstraint MonadPlus outerT, TransConstraint Monad innerT, TransConstraint MonadPlus innerT) => TransConstraint MonadPlus (ComposeT outerT innerT) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadPlus m => Dict (MonadPlus (ComposeT outerT innerT m)) Source #

(MonadTransAskUnlift outerT, MonadTransAskUnlift innerT) => MonadTransAskUnlift (ComposeT outerT innerT) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

askUnlift :: forall (m :: Type -> Type). Monad m => ComposeT outerT innerT m (WUnlift Monad (ComposeT outerT innerT)) Source #

(MonadTransCoerce outerT, MonadTransCoerce innerT, TransConstraint Monad innerT) => MonadTransCoerce (ComposeT outerT innerT) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

transCoerce :: forall (m1 :: Type -> Type) (m2 :: Type -> Type). Coercible m1 m2 => Dict (Coercible (ComposeT outerT innerT m1) (ComposeT outerT innerT m2)) Source #

(MonadTransHoist outerT, MonadTransHoist innerT) => MonadTransHoist (ComposeT outerT innerT) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

hoist :: forall (m1 :: Type -> Type) (m2 :: Type -> Type). (Monad m1, Monad m2) => (m1 --> m2) -> ComposeT outerT innerT m1 --> ComposeT outerT innerT m2 Source #

(MonadTransTunnel outerT, MonadTransTunnel innerT) => MonadTransTunnel (ComposeT outerT innerT) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Associated Types

type Tunnel (ComposeT outerT innerT) :: Type -> Type Source #

Methods

tunnel :: Monad m => ((forall (m1 :: Type -> Type) a. Monad m1 => ComposeT outerT innerT m1 a -> m1 (Tunnel (ComposeT outerT innerT) a)) -> m (Tunnel (ComposeT outerT innerT) r)) -> ComposeT outerT innerT m r Source #

(MonadTransUnlift outerT, MonadTransUnlift innerT) => MonadTransUnlift (ComposeT outerT innerT) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

liftWithUnlift :: MonadIO m => (Unlift MonadTunnelIO (ComposeT outerT innerT) -> m r) -> ComposeT outerT innerT m r Source #

getDiscardingUnlift :: forall (m :: Type -> Type). Monad m => ComposeT outerT innerT m (WUnlift MonadTunnelIO (ComposeT outerT innerT)) Source #

(MonadTrans outerT, MonadTrans innerT, TransConstraint Monad innerT) => MonadTrans (ComposeT outerT innerT) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

lift :: Monad m => m a -> ComposeT outerT innerT m a #

MonadFail (outerT (innerT m)) => MonadFail (ComposeT outerT innerT m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

fail :: String -> ComposeT outerT innerT m a #

MonadFix (outerT (innerT m)) => MonadFix (ComposeT outerT innerT m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

mfix :: (a -> ComposeT outerT innerT m a) -> ComposeT outerT innerT m a #

MonadIO (outerT (innerT m)) => MonadIO (ComposeT outerT innerT m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

liftIO :: IO a -> ComposeT outerT innerT m a #

Alternative (outerT (innerT m)) => Alternative (ComposeT outerT innerT m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

empty :: ComposeT outerT innerT m a #

(<|>) :: ComposeT outerT innerT m a -> ComposeT outerT innerT m a -> ComposeT outerT innerT m a #

some :: ComposeT outerT innerT m a -> ComposeT outerT innerT m [a] #

many :: ComposeT outerT innerT m a -> ComposeT outerT innerT m [a] #

Applicative (outerT (innerT m)) => Applicative (ComposeT outerT innerT m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

pure :: a -> ComposeT outerT innerT m a #

(<*>) :: ComposeT outerT innerT m (a -> b) -> ComposeT outerT innerT m a -> ComposeT outerT innerT m b #

liftA2 :: (a -> b -> c) -> ComposeT outerT innerT m a -> ComposeT outerT innerT m b -> ComposeT outerT innerT m c #

(*>) :: ComposeT outerT innerT m a -> ComposeT outerT innerT m b -> ComposeT outerT innerT m b #

(<*) :: ComposeT outerT innerT m a -> ComposeT outerT innerT m b -> ComposeT outerT innerT m a #

Functor (outerT (innerT m)) => Functor (ComposeT outerT innerT m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

fmap :: (a -> b) -> ComposeT outerT innerT m a -> ComposeT outerT innerT m b #

(<$) :: a -> ComposeT outerT innerT m b -> ComposeT outerT innerT m a #

Monad (outerT (innerT m)) => Monad (ComposeT outerT innerT m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

(>>=) :: ComposeT outerT innerT m a -> (a -> ComposeT outerT innerT m b) -> ComposeT outerT innerT m b #

(>>) :: ComposeT outerT innerT m a -> ComposeT outerT innerT m b -> ComposeT outerT innerT m b #

return :: a -> ComposeT outerT innerT m a #

MonadPlus (outerT (innerT m)) => MonadPlus (ComposeT outerT innerT m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

Methods

mzero :: ComposeT outerT innerT m a #

mplus :: ComposeT outerT innerT m a -> ComposeT outerT innerT m a -> ComposeT outerT innerT m a #

type Tunnel (ComposeT outerT innerT) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeT

type Tunnel (ComposeT outerT innerT) = ComposeInner (Tunnel outerT) (Tunnel innerT)

composeTUnlift :: forall c outerT innerT. (MonadTransUnlift innerT, TransConstraint c innerT) => Unlift c outerT -> Unlift c innerT -> Unlift c (ComposeT outerT innerT) Source #

composeTWUnlift :: forall c outerT innerT. (MonadTransUnlift innerT, TransConstraint c innerT) => WUnlift c outerT -> WUnlift c innerT -> WUnlift c (ComposeT outerT innerT) Source #

liftOuterComposeT :: forall outerT innerT m a. (MonadTransTunnel outerT, MonadTrans innerT, TransConstraint Monad innerT, Monad m) => outerT m a -> ComposeT outerT innerT m a Source #

liftInnerComposeT :: forall outerT innerT m a. (MonadTrans outerT, TransConstraint Monad innerT, Monad m) => innerT m a -> ComposeT outerT innerT m a Source #

liftOuterComposeTWithUnlift :: forall outerT innerT m r. (MonadTransTunnel outerT, MonadTransUnlift innerT, MonadTunnelIO m) => ((forall a. ComposeT outerT innerT m a -> outerT m a) -> outerT m r) -> ComposeT outerT innerT m r Source #

liftInnerComposeTWithUnlift :: forall outerT innerT m r. (MonadTransUnlift outerT, MonadTransUnlift innerT, MonadTunnelIO m) => ((forall a. ComposeT outerT innerT m a -> innerT m a) -> innerT m r) -> ComposeT outerT innerT m r Source #