indexed-extras-0.2: Indexed functors, monads and comonads that require extensions to Haskell98

Copyright2008 Edward Kmett, Dan Doel
LicenseBSD
MaintainerReiner Pope <reiner.pope@gmail.com>
Stabilityexperimental
Portabilityrank-2 Types required for correctness of shift, but they can be removed
Safe HaskellNone
LanguageHaskell98

Control.Monad.Indexed.Cont

Description

 

Documentation

class IxMonad m => IxMonadCont m where Source #

Minimal complete definition

reset, shift

Methods

reset :: m a o o -> m r r a Source #

shift :: ((forall i. a -> m i i o) -> m r j j) -> m r o a Source #

Instances

IxMonadCont IxCont Source # 

Methods

reset :: IxCont a o o -> IxCont r r a Source #

shift :: ((forall i. a -> IxCont i i o) -> IxCont r j j) -> IxCont r o a Source #

Monad m => IxMonadCont (IxContT m) Source # 

Methods

reset :: IxContT m a o o -> IxContT m r r a Source #

shift :: ((forall i. a -> IxContT m i i o) -> IxContT m r j j) -> IxContT m r o a Source #

newtype IxContT m r o a Source #

Constructors

IxContT 

Fields

Instances

IxMonadTrans IxContT Source # 

Methods

ilift :: Monad m => m a -> IxContT m i i a #

MonadState e m => MonadState e (IxContT m i i) Source # 

Methods

get :: IxContT m i i e #

put :: e -> IxContT m i i () #

state :: (e -> (a, e)) -> IxContT m i i a #

MonadReader e m => MonadReader e (IxContT m i i) Source # 

Methods

ask :: IxContT m i i e #

local :: (e -> e) -> IxContT m i i a -> IxContT m i i a #

reader :: (e -> a) -> IxContT m i i a #

Monad m => IxMonad (IxContT m) Source # 

Methods

ibind :: (a -> IxContT m j k b) -> IxContT m i j a -> IxContT m i k b #

IxFunctor (IxContT m) Source # 

Methods

imap :: (a -> b) -> IxContT m j k a -> IxContT m j k b #

Monad m => IxApplicative (IxContT m) Source # 

Methods

iap :: IxContT m i j (a -> b) -> IxContT m j k a -> IxContT m i k b #

IxPointed (IxContT m) Source # 

Methods

ireturn :: a -> IxContT m i i a #

Monad m => IxMonadCont (IxContT m) Source # 

Methods

reset :: IxContT m a o o -> IxContT m r r a Source #

shift :: ((forall i. a -> IxContT m i i o) -> IxContT m r j j) -> IxContT m r o a Source #

Monad m => Monad (IxContT m i i) Source # 

Methods

(>>=) :: IxContT m i i a -> (a -> IxContT m i i b) -> IxContT m i i b #

(>>) :: IxContT m i i a -> IxContT m i i b -> IxContT m i i b #

return :: a -> IxContT m i i a #

fail :: String -> IxContT m i i a #

Monad m => Functor (IxContT m i j) Source # 

Methods

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

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

Monad m => Applicative (IxContT m i i) Source # 

Methods

pure :: a -> IxContT m i i a #

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

(*>) :: IxContT m i i a -> IxContT m i i b -> IxContT m i i b #

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

MonadIO m => MonadIO (IxContT m i i) Source # 

Methods

liftIO :: IO a -> IxContT m i i a #

Monad m => MonadCont (IxContT m i i) Source # 

Methods

callCC :: ((a -> IxContT m i i b) -> IxContT m i i a) -> IxContT m i i a #

Monad m => Pointed (IxContT m i i) Source # 

Methods

point :: a -> IxContT m i i a #

runIxContT_ :: Monad m => IxContT m r a a -> m r Source #

newtype IxCont r o a Source #

Constructors

IxCont (IxContT Identity r o a) 

Instances

IxMonad IxCont Source # 

Methods

ibind :: (a -> IxCont j k b) -> IxCont i j a -> IxCont i k b #

IxFunctor IxCont Source # 

Methods

imap :: (a -> b) -> IxCont j k a -> IxCont j k b #

IxApplicative IxCont Source # 

Methods

iap :: IxCont i j (a -> b) -> IxCont j k a -> IxCont i k b #

IxPointed IxCont Source # 

Methods

ireturn :: a -> IxCont i i a #

IxMonadCont IxCont Source # 

Methods

reset :: IxCont a o o -> IxCont r r a Source #

shift :: ((forall i. a -> IxCont i i o) -> IxCont r j j) -> IxCont r o a Source #

Monad (IxCont i i) Source # 

Methods

(>>=) :: IxCont i i a -> (a -> IxCont i i b) -> IxCont i i b #

(>>) :: IxCont i i a -> IxCont i i b -> IxCont i i b #

return :: a -> IxCont i i a #

fail :: String -> IxCont i i a #

Functor (IxCont i j) Source # 

Methods

fmap :: (a -> b) -> IxCont i j a -> IxCont i j b #

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

Applicative (IxCont i i) Source # 

Methods

pure :: a -> IxCont i i a #

(<*>) :: IxCont i i (a -> b) -> IxCont i i a -> IxCont i i b #

(*>) :: IxCont i i a -> IxCont i i b -> IxCont i i b #

(<*) :: IxCont i i a -> IxCont i i b -> IxCont i i a #

MonadCont (IxCont i i) Source # 

Methods

callCC :: ((a -> IxCont i i b) -> IxCont i i a) -> IxCont i i a #

Pointed (IxCont i i) Source # 

Methods

point :: a -> IxCont i i a #

runIxCont :: IxCont r o a -> (a -> o) -> r Source #

runIxCont_ :: IxCont r a a -> r Source #