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 <[email protected]>
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Monad.Trans.Indexed.Cont

Description

The continuation indexed monad transformer.

Documentation

newtype ContIx (i :: k) (j :: k) (m :: k -> Type) 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 j x y k1. 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 j k1 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 k1 y i. 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 k1 y i 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 k1 z x i. 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 :: forall {k1} x (j :: k1) (k2 :: k1) (m :: k1 -> Type) y (i :: k1). ((x -> ContIx j k2 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 :: forall {k1} m (i :: k1) (j :: k1) (k2 :: k1) x. (m i -> m j) -> ContIx i k2 m x -> ContIx j k2 m x Source #

withContIx :: forall {k1} y m (k2 :: k1) x (j :: k1) (i :: k1). ((y -> m k2) -> x -> m j) -> ContIx i j m x -> ContIx i k2 m y Source #

resetIx :: forall (m :: Type -> Type) x j i. 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 :: forall {k} (i :: k) (m :: k -> Type) x. ContIx i i m x -> ContT i m x Source #

fromContT :: forall {k} (i :: k) (m :: k -> Type) x. ContT i m x -> ContIx i i m x Source #