monadology-0.4: The best ideas in monad-related classes and types.
Safe HaskellNone
LanguageGHC2021

Control.Monad.Ology.General.Trans.Unlift

Documentation

class (MonadTransTunnel t, TransConstraint MonadFail t, TransConstraint MonadIO t, TransConstraint MonadFix t, TransConstraint Monad t, MonadExtract (Tunnel t)) => MonadTransUnlift (t :: TransKind) where Source #

Minimal complete definition

liftWithUnlift

Methods

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

Lift with an unlifting function that accounts for the transformer's effects (using MVars where necessary).

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

Return an unlifting function that discards the transformer's effects (such as state change or output).

Instances

Instances details
MonadTransUnlift LifecycleT Source # 
Instance details

Defined in Control.Monad.Ology.Specific.LifecycleT

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

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

Methods

liftWithUnlift :: MonadIO m => (Unlift MonadTunnelIO (ComposeOuter outer) -> m r) -> ComposeOuter outer m r Source #

getDiscardingUnlift :: forall (m :: Type -> Type). Monad m => ComposeOuter outer m (WUnlift MonadTunnelIO (ComposeOuter outer)) 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 #

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

Defined in Control.Monad.Ology.Specific.IdentityT

Methods

liftWithUnlift :: MonadIO m => (Unlift MonadTunnelIO (IdentityT :: (Type -> Type) -> Type -> Type) -> m r) -> IdentityT m r Source #

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

MonadTransUnlift (ReaderT r) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

liftWithUnlift :: MonadIO m => (Unlift MonadTunnelIO (ReaderT r) -> m r0) -> ReaderT r m r0 Source #

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

MonadTransUnlift (StateT s) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StateT

Methods

liftWithUnlift :: MonadIO m => (Unlift MonadTunnelIO (StateT s) -> m r) -> StateT s m r Source #

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

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

Defined in Control.Monad.Ology.Specific.WriterT

(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 #

wLiftWithUnlift :: forall (t :: TransKind) (m :: Type -> Type). (MonadTransUnlift t, MonadTunnelIO m) => WBackraised m (t m) Source #

composeUnliftRaised :: forall (m :: Type -> Type) (t :: TransKind) (n :: Type -> Type). MonadUnliftIO m => Unlift Functor t -> (m --> n) -> t m --> n Source #

composeUnliftRaisedCommute :: forall (t :: TransKind) (m :: Type -> Type) (n :: Type -> Type). (MonadTransUnlift t, MonadUnliftIO m, MonadUnliftIO n) => Unlift Functor t -> (m --> n) -> t m --> n Source #

class (MonadFail m, MonadIO m, MonadFix m, MonadTunnelIO m, MonadExtract (TunnelIO m)) => MonadUnliftIO (m :: Type -> Type) where Source #

Minimal complete definition

liftIOWithUnlift

Methods

liftIOWithUnlift :: IO -/-> m Source #

Lift with an unlifting function that accounts for the effects over IO.

getDiscardingIOUnlift :: m (WRaised m IO) Source #

Return an unlifting function that discards the effects over IO.

monoHoist :: (MonadTransUnlift t, MonadTunnelIO ma, MonadIO mb) => (ma a -> mb b) -> t ma a -> t mb b Source #