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

Control.Monad.Ology.Specific.StepT

Synopsis

Documentation

newtype StepT (f :: Type -> Type) (m :: Type -> Type) a Source #

A monad that can be run step-by-step until the result.

Constructors

MkStepT 

Fields

Instances

Instances details
Functor f => TransConstraint MonadIO (StepT f) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StepT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadIO m => Dict (MonadIO (StepT f m)) Source #

Functor f => TransConstraint Functor (StepT f) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StepT

Methods

hasTransConstraint :: forall (m :: Type -> Type). Functor m => Dict (Functor (StepT f m)) Source #

Functor f => TransConstraint Monad (StepT f) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StepT

Methods

hasTransConstraint :: forall (m :: Type -> Type). Monad m => Dict (Monad (StepT f m)) Source #

Functor f => MonadTransHoist (StepT f) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StepT

Methods

hoist :: forall (m1 :: Type -> Type) (m2 :: Type -> Type). (Monad m1, Monad m2) => (m1 --> m2) -> StepT f m1 --> StepT f m2 Source #

Functor f => MonadTrans (StepT f) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StepT

Methods

lift :: Monad m => m a -> StepT f m a #

(Functor f, MonadIO m) => MonadIO (StepT f m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StepT

Methods

liftIO :: IO a -> StepT f m a #

(Functor f, Monad m) => Applicative (StepT f m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StepT

Methods

pure :: a -> StepT f m a #

(<*>) :: StepT f m (a -> b) -> StepT f m a -> StepT f m b #

liftA2 :: (a -> b -> c) -> StepT f m a -> StepT f m b -> StepT f m c #

(*>) :: StepT f m a -> StepT f m b -> StepT f m b #

(<*) :: StepT f m a -> StepT f m b -> StepT f m a #

(Functor f, Functor m) => Functor (StepT f m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StepT

Methods

fmap :: (a -> b) -> StepT f m a -> StepT f m b #

(<$) :: a -> StepT f m b -> StepT f m a #

(Functor f, Monad m) => Monad (StepT f m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.StepT

Methods

(>>=) :: StepT f m a -> (a -> StepT f m b) -> StepT f m b #

(>>) :: StepT f m a -> StepT f m b -> StepT f m b #

return :: a -> StepT f m a #

underTunnelStepT :: forall t (m :: Type -> Type) (turn :: Type -> Type) r. (MonadTransTunnel t, Monad m, Functor turn) => ((forall (m1 :: Type -> Type) a. Monad m1 => t m1 a -> m1 (Tunnel t a)) -> StepT turn m (Tunnel t r)) -> StepT turn (t m) r Source #

runSteps :: forall (m :: Type -> Type) (f :: Type -> Type). Monad m => Extract f -> StepT f m --> m Source #

Run all the steps until done.

pendingStep :: forall (f :: Type -> Type) (m :: Type -> Type). (Functor f, Monad m) => f --> StepT f m Source #

A pending step for this result.