monadology-0.1
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Monad.Ology.General.Trans.Tunnel

Synopsis

Documentation

class (MonadTransHoist t, MonadInner (Tunnel t)) => MonadTransTunnel t where Source #

Monad transformers that allow "tunneling" (working with the monad under the transformer).

Associated Types

type Tunnel t :: Type -> Type Source #

The tunnel monad of this transformer.

Methods

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

Instances

Instances details
MonadTransTunnel MaybeT Source # 
Instance details

Defined in Control.Monad.Ology.Specific.MaybeT

Associated Types

type Tunnel MaybeT :: Type -> Type Source #

Methods

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

MonadInner inner => MonadTransTunnel (ComposeInner inner) Source # 
Instance details

Defined in Control.Monad.Ology.General.Trans.Tunnel

Associated Types

type Tunnel (ComposeInner inner) :: Type -> Type Source #

Methods

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

MonadOuter outer => MonadTransTunnel (ComposeOuter outer) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeOuter

Associated Types

type Tunnel (ComposeOuter outer) :: Type -> Type Source #

Methods

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

MonadTransTunnel (LifecycleT :: (Type -> Type) -> Type -> TYPE LiftedRep) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.LifecycleT

Associated Types

type Tunnel LifecycleT :: Type -> Type Source #

Methods

tunnel :: Monad m => ((forall (m1 :: Type -> Type) a. Monad m1 => LifecycleT m1 a -> m1 (Tunnel LifecycleT a)) -> m (Tunnel LifecycleT r)) -> LifecycleT m r 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 #

MonadTransTunnel (ExceptT e) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ExceptT

Associated Types

type Tunnel (ExceptT e) :: Type -> Type Source #

Methods

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

MonadTransTunnel (IdentityT :: (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.IdentityT

Associated Types

type Tunnel IdentityT :: Type -> Type Source #

Methods

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

MonadTransTunnel (ReaderT r) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Associated Types

type Tunnel (ReaderT r) :: Type -> Type Source #

Methods

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

MonadTransTunnel (StateT s) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StateT

Associated Types

type Tunnel (StateT s) :: Type -> Type Source #

Methods

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

Monoid w => MonadTransTunnel (WriterT w) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.WriterT

Associated Types

type Tunnel (WriterT w) :: Type -> Type Source #

Methods

tunnel :: Monad m => ((forall (m1 :: Type -> Type) a. Monad m1 => WriterT w m1 a -> m1 (Tunnel (WriterT w) a)) -> m (Tunnel (WriterT w) r)) -> WriterT w m r 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 #

tunnelHoist :: forall t m1 m2. (MonadTransTunnel t, Monad m1, Monad m2) => (m1 --> m2) -> t m1 --> t m2 Source #

backHoist :: (MonadTransTunnel t, Monad ma, Monad mb) => (ma -/-> mb) -> t ma -/-> t mb Source #

wBackHoist :: (MonadTransTunnel t, Monad ma, Monad mb) => WBackraised ma mb -> WBackraised (t ma) (t mb) Source #

commuteTWith :: forall ta tb m. (MonadTransTunnel ta, MonadTransTunnel tb, Monad m) => (forall r. Tunnel tb (Tunnel ta r) -> Tunnel ta (Tunnel tb r)) -> ta (tb m) --> tb (ta m) Source #

Commute two transformers in a transformer stack, by commuting their tunnel monads.

commuteT :: forall ta tb m. (MonadTransTunnel ta, MonadTransTunnel tb, Monad (Tunnel ta), MonadInner (Tunnel tb), Monad m) => ta (tb m) --> tb (ta m) Source #

Commute two transformers in a transformer stack.

commuteTBack :: forall ta tb m. (MonadTransTunnel ta, MonadTransTunnel tb, MonadInner (Tunnel ta), MonadInner (Tunnel tb), Monad m) => ta (tb m) -/-> tb (ta m) Source #

class (MonadHoistIO m, MonadInner (TunnelIO m)) => MonadTunnelIO m where Source #

Associated Types

type TunnelIO m :: Type -> Type Source #

Methods

tunnelIO :: forall r. ((forall a. m a -> IO (TunnelIO m a)) -> IO (TunnelIO m r)) -> m r Source #

Instances

Instances details
MonadTunnelIO IO Source # 
Instance details

Defined in Control.Monad.Ology.General.Trans.Tunnel

Associated Types

type TunnelIO IO :: Type -> Type Source #

Methods

tunnelIO :: ((forall a. IO a -> IO (TunnelIO IO a)) -> IO (TunnelIO IO r)) -> IO r Source #

(MonadTransTunnel t, MonadInner (Tunnel t), TransConstraint MonadIO t) => TransConstraint MonadTunnelIO t Source # 
Instance details

Defined in Control.Monad.Ology.General.Trans.Tunnel

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadTunnelIO m => Dict (MonadTunnelIO (t m)) Source #

(MonadTransTunnel t, MonadInner (Tunnel t), MonadTunnelIO m, MonadIO (t m)) => MonadTunnelIO (t m) Source # 
Instance details

Defined in Control.Monad.Ology.General.Trans.Tunnel

Associated Types

type TunnelIO (t m) :: Type -> Type Source #

Methods

tunnelIO :: ((forall a. t m a -> IO (TunnelIO (t m) a)) -> IO (TunnelIO (t m) r)) -> t m r Source #