Copyright | (C) 2024 Eitan Chatav |
---|---|
License | BSD 3-Clause License (see the file LICENSE) |
Maintainer | Eitan Chatav <eitan.chatav@gmail.com> |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
The state indexed monad transformer.
Documentation
newtype StateIx i j m x Source #
StateIx | |
|
Instances
IxMonadTrans StateIx Source # | |
Defined in Control.Monad.Trans.Indexed.State 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 # | |
i ~ j => MonadTrans (StateIx i j) Source # | |
Defined in Control.Monad.Trans.Indexed.State | |
(i ~ j, Monad m) => Applicative (StateIx i j m) Source # | |
Defined in Control.Monad.Trans.Indexed.State 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 # | |
(i ~ j, Monad m) => Monad (StateIx i j m) Source # | |
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 #
fromStateT :: StateT i m x -> StateIx i i m x Source #