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.State

Description

The state indexed monad transformer.

Documentation

newtype StateIx i j m x Source #

Constructors

StateIx 

Fields

Instances

Instances details
IxMonadTrans StateIx Source # 
Instance details

Defined in Control.Monad.Trans.Indexed.State

Methods

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

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

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

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

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

(i ~ j, Monad m) => MonadState i (StateIx i j m) Source # 
Instance details

Defined in Control.Monad.Trans.Indexed.State

Methods

get :: StateIx i j m i #

put :: i -> StateIx i j m () #

state :: (i -> (a, i)) -> StateIx i j m a #

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

Defined in Control.Monad.Trans.Indexed.State

Methods

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

(i ~ j, Monad m) => Applicative (StateIx i j m) Source # 
Instance details

Defined in Control.Monad.Trans.Indexed.State

Methods

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

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

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

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

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

Functor m => Functor (StateIx i j m) Source # 
Instance details

Defined in Control.Monad.Trans.Indexed.State

Methods

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

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

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

Defined in Control.Monad.Trans.Indexed.State

Methods

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

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

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

evalStateIx :: Monad m => StateIx i j m x -> i -> m x Source #

execStateIx :: Monad m => StateIx i j m x -> i -> m j Source #

modifyIx :: Applicative m => (i -> j) -> StateIx i j m () Source #

putIx :: Applicative m => j -> StateIx i j m () Source #

toStateT :: StateIx i i m x -> StateT i m x Source #

fromStateT :: StateT i m x -> StateIx i i m x Source #