indexed-transformers-0.1.0.4: Atkey indexed monad transformers
Copyright(C) 2024 Eitan Chatav
LicenseBSD 3-Clause License (see the file LICENSE)
MaintainerEitan Chatav <eitan.chatav@gmail.com>
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Monad.Trans.Indexed.Cont

Description

The continuation indexed monad transformer.

Documentation

newtype ContIx i j m x Source #

Constructors

ContIx 

Fields

Instances

Instances details
IxMonadTrans (ContIx :: Type -> Type -> (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in Control.Monad.Trans.Indexed.Cont

Methods

apIx :: forall (m :: Type -> Type) (i :: k) (j :: k) x y (k1 :: k). Monad m => ContIx i j m (x -> y) -> ContIx j k1 m x -> ContIx i k1 m y Source #

joinIx :: forall (m :: Type -> Type) (i :: k) (j :: k) (k1 :: k) y. Monad m => ContIx i j m (ContIx j k1 m y) -> ContIx i k1 m y Source #

bindIx :: forall (m :: Type -> Type) x (j :: k) (k1 :: k) y (i :: k). Monad m => (x -> ContIx j k1 m y) -> ContIx i j m x -> ContIx i k1 m y Source #

thenIx :: forall (m :: Type -> Type) (j :: k) (k1 :: k) y (i :: k) x. Monad m => ContIx j k1 m y -> ContIx i j m x -> ContIx i k1 m y Source #

andThenIx :: forall (m :: Type -> Type) y (j :: k) (k1 :: k) z x (i :: k). Monad m => (y -> ContIx j k1 m z) -> (x -> ContIx i j m y) -> x -> ContIx i k1 m z Source #

i ~ j => MonadTrans (ContIx i j) Source # 
Instance details

Defined in Control.Monad.Trans.Indexed.Cont

Methods

lift :: Monad m => m a -> ContIx i j m a #

i ~ j => Applicative (ContIx i j m) Source # 
Instance details

Defined in Control.Monad.Trans.Indexed.Cont

Methods

pure :: a -> ContIx i j m a #

(<*>) :: ContIx i j m (a -> b) -> ContIx i j m a -> ContIx i j m b #

liftA2 :: (a -> b -> c) -> ContIx i j m a -> ContIx i j m b -> ContIx i j m c #

(*>) :: ContIx i j m a -> ContIx i j m b -> ContIx i j m b #

(<*) :: ContIx i j m a -> ContIx i j m b -> ContIx i j m a #

Functor (ContIx i j m) Source # 
Instance details

Defined in Control.Monad.Trans.Indexed.Cont

Methods

fmap :: (a -> b) -> ContIx i j m a -> ContIx i j m b #

(<$) :: a -> ContIx i j m b -> ContIx i j m a #

i ~ j => Monad (ContIx i j m) Source # 
Instance details

Defined in Control.Monad.Trans.Indexed.Cont

Methods

(>>=) :: ContIx i j m a -> (a -> ContIx i j m b) -> ContIx i j m b #

(>>) :: ContIx i j m a -> ContIx i j m b -> ContIx i j m b #

return :: a -> ContIx i j m a #

i ~ j => MonadCont (ContIx i j m) Source # 
Instance details

Defined in Control.Monad.Trans.Indexed.Cont

Methods

callCC :: ((a -> ContIx i j m b) -> ContIx i j m a) -> ContIx i j m a #

callCCIx :: ((x -> ContIx j k m y) -> ContIx i j m x) -> ContIx i j m x Source #

evalContIx :: Monad m => ContIx x j m j -> m x Source #

mapContIx :: (m i -> m j) -> ContIx i k m x -> ContIx j k m x Source #

withContIx :: ((y -> m k) -> x -> m j) -> ContIx i j m x -> ContIx i k m y Source #

resetIx :: Monad m => ContIx x j m j -> ContIx i i m x Source #

shiftIx :: Monad m => ((x -> m j) -> ContIx i k m k) -> ContIx i j m x Source #

toContT :: ContIx i i m x -> ContT i m x Source #

fromContT :: ContT i m x -> ContIx i i m x Source #