Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- class (MonadTransHoist t, MonadInner (Tunnel t)) => MonadTransTunnel t where
- tunnelHoist :: forall t m1 m2. (MonadTransTunnel t, Monad m1, Monad m2) => (m1 --> m2) -> t m1 --> t m2
- backHoist :: (MonadTransTunnel t, Monad ma, Monad mb) => (ma -/-> mb) -> t ma -/-> t mb
- wBackHoist :: (MonadTransTunnel t, Monad ma, Monad mb) => WBackraised ma mb -> WBackraised (t ma) (t mb)
- 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)
- commuteT :: forall ta tb m. (MonadTransTunnel ta, MonadTransTunnel tb, Monad (Tunnel ta), MonadInner (Tunnel tb), Monad m) => ta (tb m) --> tb (ta m)
- commuteTBack :: forall ta tb m. (MonadTransTunnel ta, MonadTransTunnel tb, MonadInner (Tunnel ta), MonadInner (Tunnel tb), Monad m) => ta (tb m) -/-> tb (ta m)
- class (MonadHoistIO m, MonadInner (TunnelIO m)) => MonadTunnelIO m where
- class (MonadTunnelIO m, MonadInner (TunnelIO m)) => MonadTunnelIOInner m
Documentation
class (MonadTransHoist t, MonadInner (Tunnel t)) => MonadTransTunnel t where Source #
Monad transformers that allow "tunneling" (working with the monad under the transformer).
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
tunnelHoist :: forall t m1 m2. (MonadTransTunnel t, Monad m1, Monad m2) => (m1 --> m2) -> t m1 --> t m2 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 #
Instances
MonadTunnelIO IO Source # | |
(MonadTransTunnel t, MonadInner (Tunnel t), TransConstraint MonadIO t) => TransConstraint MonadTunnelIO t Source # | |
Defined in Control.Monad.Ology.General.Trans.Tunnel 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 # | |
class (MonadTunnelIO m, MonadInner (TunnelIO m)) => MonadTunnelIOInner m Source #
for use in WUnlift
, etc.
Instances
(MonadTunnelIO m, MonadInner (TunnelIO m)) => MonadTunnelIOInner m Source # | |
Defined in Control.Monad.Ology.General.Trans.Tunnel | |
(MonadTransTunnel t, MonadInner (Tunnel t), TransConstraint MonadIO t) => TransConstraint MonadTunnelIOInner t Source # | |
Defined in Control.Monad.Ology.General.Trans.Tunnel hasTransConstraint :: forall (m :: Type -> Type). MonadTunnelIOInner m => Dict (MonadTunnelIOInner (t m)) Source # |