Module

Control.Monad.Trans.Unlift

#MonadTransUnlift

class (MonadTransControl m t stT, SingletonFunctor stT, Functor m, Functor (t m)) <= MonadTransUnlift m t stT | t -> stT

Instances

#mkUnlift

mkUnlift :: forall t m a stT. SingletonFunctor stT => Functor m => (forall b. t m b -> m (stT b)) -> t m a -> m a

#Unlift

newtype Unlift t m

Constructors

  • Unlift (forall a. t m a -> m a)

#unlift

unlift :: forall t m. Unlift t m -> (forall a. t m a -> m a)

#askUnlift

askUnlift :: forall t m stT. MonadTransUnlift m t stT => Functor m => t m (Unlift t m)

#askRun

askRun :: forall t m a stT. MonadTransUnlift m t stT => Functor m => t m (t m a -> m a)

#MonadBaseUnlift

class (MonadBaseControl base m stM, SingletonFunctor stM, Functor base, Functor m) <= MonadBaseUnlift base m stM | m -> stM base

Instances

#mkUnliftBase

mkUnliftBase :: forall base m stM a. SingletonFunctor stM => Functor base => (forall b. m b -> base (stM b)) -> m a -> base a

#UnliftBase

newtype UnliftBase base m

Constructors

#unliftBase

unliftBase :: forall base m. UnliftBase base m -> (forall a. m a -> base a)

#askUnliftBase

askUnliftBase :: forall base m stM. MonadBaseUnlift base m stM => Applicative base => m (UnliftBase base m)

#askRunBase

askRunBase :: forall base m stM a. MonadBaseUnlift base m stM => Applicative base => m (m a -> base a)

Modules