License | BSD-style (see the file LICENSE) |
---|---|
Maintainer | ocean0yohsuke@gmail.com |
Stability | experimental |
Portability | --- |
Safe Haskell | Safe |
Language | Haskell2010 |
This module extended State Monad in mtl(monad-transformer-library).
- module Control.Monad.State
- newtype StateT2 s m1 m2 a = StateT2 {
- runStateT2 :: s -> m1 (m2 (a, s))
- evalStateT2 :: (Monad m1, Monad2 m2) => StateT2 s m1 m2 a -> s -> m1 (m2 a)
- execStateT2 :: (Monad m1, Monad2 m2) => StateT2 s m1 m2 a -> s -> m1 (m2 s)
- mapStateT2 :: (m1 (m2 (a, s)) -> n1 (n2 (b, s))) -> StateT2 s m1 m2 a -> StateT2 s n1 n2 b
- withStateT2 :: (s -> s) -> StateT2 s m1 m2 a -> StateT2 s m1 m2 a
- newtype StateT3 s m1 m2 m3 a = StateT3 {
- runStateT3 :: s -> m1 (m2 (m3 (a, s)))
- evalStateT3 :: (Monad m1, Monad2 m2, Monad3 m3) => StateT3 s m1 m2 m3 a -> s -> m1 (m2 (m3 a))
- execStateT3 :: (Monad m1, Monad2 m2, Monad3 m3) => StateT3 s m1 m2 m3 a -> s -> m1 (m2 (m3 s))
- mapStateT3 :: (m1 (m2 (m3 (a, s))) -> n1 (n2 (n3 (b, s)))) -> StateT3 s m1 m2 m3 a -> StateT3 s n1 n2 n3 b
- withStateT3 :: (s -> s) -> StateT3 s m1 m2 m3 a -> StateT3 s m1 m2 m3 a
Documentation
module Control.Monad.State
Level-2
newtype StateT2 s m1 m2 a Source
StateT2 | |
|
(Monad m1, Monad2 m2) => MonadState s (StateT2 s m1 m2) Source | |
MonadTrans2 (StateT2 s) Source | |
(Monad m1, Monad2 m2) => Monad (StateT2 s m1 m2) Source | |
(Functor m1, Functor m2) => Functor (StateT2 s m1 m2) Source | |
(Monad m1, Monad2 m2) => Applicative (StateT2 s m1 m2) Source | |
(MonadIO m1, Monad m1, Monad2 m2) => MonadIO (StateT2 s m1 m2) Source |
evalStateT2 :: (Monad m1, Monad2 m2) => StateT2 s m1 m2 a -> s -> m1 (m2 a) Source
execStateT2 :: (Monad m1, Monad2 m2) => StateT2 s m1 m2 a -> s -> m1 (m2 s) Source
mapStateT2 :: (m1 (m2 (a, s)) -> n1 (n2 (b, s))) -> StateT2 s m1 m2 a -> StateT2 s n1 n2 b Source
withStateT2 :: (s -> s) -> StateT2 s m1 m2 a -> StateT2 s m1 m2 a Source
Level-3
newtype StateT3 s m1 m2 m3 a Source
StateT3 | |
|
(Monad m1, Monad2 m2, Monad3 m3) => MonadState s (StateT3 s m1 m2 m3) Source | |
MonadTrans3 (StateT3 s) Source | |
(Monad m1, Monad2 m2, Monad3 m3) => Monad (StateT3 s m1 m2 m3) Source | |
(Functor m1, Functor m2, Functor m3) => Functor (StateT3 s m1 m2 m3) Source | |
(Monad m1, Monad2 m2, Monad3 m3) => Applicative (StateT3 s m1 m2 m3) Source | |
(MonadIO m1, Monad m1, Monad2 m2, Monad3 m3) => MonadIO (StateT3 s m1 m2 m3) Source |
evalStateT3 :: (Monad m1, Monad2 m2, Monad3 m3) => StateT3 s m1 m2 m3 a -> s -> m1 (m2 (m3 a)) Source
execStateT3 :: (Monad m1, Monad2 m2, Monad3 m3) => StateT3 s m1 m2 m3 a -> s -> m1 (m2 (m3 s)) Source
mapStateT3 :: (m1 (m2 (m3 (a, s))) -> n1 (n2 (n3 (b, s)))) -> StateT3 s m1 m2 m3 a -> StateT3 s n1 n2 n3 b Source
withStateT3 :: (s -> s) -> StateT3 s m1 m2 m3 a -> StateT3 s m1 m2 m3 a Source