darcs-2.18.5: a distributed, interactive, smart revision control system
Safe HaskellNone
LanguageHaskell2010

Darcs.Util.IndexedMonad

Synopsis

Documentation

class Monad (m :: Type -> Type -> Type -> Type) where #

An alternative monad class, indexed by a "from" and "to" state.

Methods

return :: a -> m i i a #

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

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

Instances

Instances details
Monad m => Monad (ReaderT r m) # 
Instance details

Defined in Darcs.Util.IndexedMonad

Methods

return :: a -> ReaderT r m i i a #

(>>=) :: ReaderT r m i j a -> (a -> ReaderT r m j k b) -> ReaderT r m i k b #

(>>) :: ReaderT r m i j a -> ReaderT r m j k b -> ReaderT r m i k b #

class LiftIx (t :: (Type -> Type) -> Type -> Type -> Type -> Type) where #

A class for indexed monad transformers, going from normal Haskell monads into our indexed monads.

Methods

liftIx :: m a -> t m i i a #

when :: Monad m => Bool -> m i i () -> m i i () #

ifThenElse :: Bool -> a -> a -> a #

class Monad m => MonadReader r (m :: Type -> Type -> Type -> Type) | m -> r where #

An indexed version of the standard MonadReader class

Methods

ask :: m i i r #

local :: (r -> r) -> m i i a -> m i i a #

Instances

Instances details
Monad m => MonadReader r (ReaderT r m) # 
Instance details

Defined in Darcs.Util.IndexedMonad

Methods

ask :: ReaderT r m i i r #

local :: (r -> r) -> ReaderT r m i i a -> ReaderT r m i i a #

newtype ReaderT r (m :: Type -> Type -> Type -> Type) i j a #

An indexed version of the standard ReaderT transformer

Constructors

ReaderT 

Fields

Instances

Instances details
Monad m => MonadReader r (ReaderT r m) # 
Instance details

Defined in Darcs.Util.IndexedMonad

Methods

ask :: ReaderT r m i i r #

local :: (r -> r) -> ReaderT r m i i a -> ReaderT r m i i a #

Monad m => Monad (ReaderT r m) # 
Instance details

Defined in Darcs.Util.IndexedMonad

Methods

return :: a -> ReaderT r m i i a #

(>>=) :: ReaderT r m i j a -> (a -> ReaderT r m j k b) -> ReaderT r m i k b #

(>>) :: ReaderT r m i j a -> ReaderT r m j k b -> ReaderT r m i k b #

asks :: MonadReader r m => (r -> a) -> m i i a #