hs-ix-0.2.0.0: Indexed applicative functors and monads
Safe HaskellNone
LanguageHaskell2010

Control.Monad.Indexed.Trans.Cont

Description

The indexed continuation transformer: see ContT.

Documentation

newtype ContT f i j a Source #

Constructors

ContT 

Fields

Instances

Instances details
Bind (ContT f :: k -> k -> Type -> Type) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Cont

Methods

join :: forall (i :: k0) (j :: k0) (k1 :: k0) a. ContT f i j (ContT f j k1 a) -> ContT f i k1 a Source #

(>>=) :: forall (i :: k0) (j :: k0) a (k1 :: k0) b. ContT f i j a -> (a -> ContT f j k1 b) -> ContT f i k1 b Source #

Apply (ContT f :: k -> k -> Type -> Type) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Cont

Methods

(<*>) :: forall (i :: k0) (j :: k0) a b (k1 :: k0). ContT f i j (a -> b) -> ContT f j k1 a -> ContT f i k1 b Source #

(*>) :: forall (i :: k0) (j :: k0) a (k1 :: k0) b. ContT f i j a -> ContT f j k1 b -> ContT f i k1 b Source #

(<*) :: forall (i :: k0) (j :: k0) a (k1 :: k0) b. ContT f i j a -> ContT f j k1 b -> ContT f i k1 a Source #

liftA2 :: forall a b c (i :: k0) (j :: k0) (k1 :: k0). (a -> b -> c) -> ContT f i j a -> ContT f j k1 b -> ContT f i k1 c Source #

Monad (ContT f k2 k2) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Cont

Methods

(>>=) :: ContT f k2 k2 a -> (a -> ContT f k2 k2 b) -> ContT f k2 k2 b #

(>>) :: ContT f k2 k2 a -> ContT f k2 k2 b -> ContT f k2 k2 b #

return :: a -> ContT f k2 k2 a #

Functor (ContT f i j) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Cont

Methods

fmap :: (a -> b) -> ContT f i j a -> ContT f i j b #

(<$) :: a -> ContT f i j b -> ContT f i j a #

MonadFail m => MonadFail (ContT m k k) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Cont

Methods

fail :: String -> ContT m k k a #

Applicative (ContT f k2 k2) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Cont

Methods

pure :: a -> ContT f k2 k2 a #

(<*>) :: ContT f k2 k2 (a -> b) -> ContT f k2 k2 a -> ContT f k2 k2 b #

liftA2 :: (a -> b -> c) -> ContT f k2 k2 a -> ContT f k2 k2 b -> ContT f k2 k2 c #

(*>) :: ContT f k2 k2 a -> ContT f k2 k2 b -> ContT f k2 k2 b #

(<*) :: ContT f k2 k2 a -> ContT f k2 k2 b -> ContT f k2 k2 a #

Alternative p => Alternative (ContT p k k) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Cont

Methods

empty :: ContT p k k a #

(<|>) :: ContT p k k a -> ContT p k k a -> ContT p k k a #

some :: ContT p k k a -> ContT p k k [a] #

many :: ContT p k k a -> ContT p k k [a] #

Alternative p => MonadPlus (ContT p k k) Source # 
Instance details

Defined in Control.Monad.Indexed.Trans.Cont

Methods

mzero :: ContT p k k a #

mplus :: ContT p k k a -> ContT p k k a -> ContT p k k a #

lift :: Monad m => m a -> ContT m i i a Source #

evalContT :: Applicative p => ContT p a a a -> p a Source #

mapContT :: (f i -> f j) -> ContT f i k a -> ContT f j k a Source #

withContT :: ((b -> f j) -> a -> f k) -> ContT f i k a -> ContT f i j b Source #

callCC :: ((a -> ContT f j k b) -> ContT f i j a) -> ContT f i j a Source #

resetT :: Monad m => ContT m a i i -> ContT m j j a Source #

shiftT :: Monad m => ((a -> m j) -> ContT m i k k) -> ContT m i j a Source #

liftLocal :: (Monad m, Applicative p) => m r -> (p r -> m i -> m j) -> p r -> ContT m i j a -> ContT m j i a Source #