Safe Haskell | None |
---|---|
Language | Haskell2010 |
- type State tag r = StateT tag r Identity
- state :: Monad m => proxy tag -> (s -> (a, s)) -> StateT tag s m a
- runState :: proxy tag -> State tag s a -> s -> (a, s)
- evalState :: proxy tag -> State tag s a -> s -> a
- execState :: proxy tag -> State tag s a -> s -> s
- data StateT tag s m a
- stateT :: proxy tag -> (s -> m (a, s)) -> StateT tag s m a
- runStateT :: proxy tag -> StateT tag s m a -> s -> m (a, s)
- evalStateT :: Monad m => proxy tag -> StateT tag s m a -> s -> m a
- execStateT :: Monad m => proxy tag -> StateT tag s m a -> s -> m s
- mapStateT :: proxy tag -> (m (a, s) -> n (b, s)) -> StateT tag s m a -> StateT tag s n b
- get :: Monad m => proxy tag -> StateT tag s m s
- put :: Monad m => proxy tag -> s -> StateT tag s m ()
- liftCatch :: proxy tag -> Catch e m (a, s) -> Catch e (StateT tag s m) a
- liftCallCC' :: proxy tag -> CallCC m (a, s) (b, s) -> CallCC (StateT tag s m) a b
- liftListen :: Monad m => proxy tag -> Listen w m (a, s) -> Listen w (StateT tag s m) a
- liftPass :: Monad m => proxy tag -> Pass w m (a, s) -> Pass w (StateT tag s m) a
The State monad
state :: Monad m => proxy tag -> (s -> (a, s)) -> StateT tag s m a Source
Constructor for computations in the state monad
(the inverse of runState
).
runState :: proxy tag -> State tag s a -> s -> (a, s) Source
Runs a State
with the given initial state
and returns both the final value and the final state.
evalState :: proxy tag -> State tag s a -> s -> a Source
Runs a State
with the given initial state
and returns the final value, discarding the final state.
execState :: proxy tag -> State tag s a -> s -> s Source
Runs a State
with the given initial state
and returns the final state, discarding the final value.
The StateT monad transformer
The state monad transformer.
The return
function leaves the state unchanged, while >>=
uses
the final state of the first computation as the initial state of the second.
stateT :: proxy tag -> (s -> m (a, s)) -> StateT tag s m a Source
Constructor for computations in the state monad transformer.
runStateT :: proxy tag -> StateT tag s m a -> s -> m (a, s) Source
Runs a StateT
with the given initial state
and returns both the final value and the final state.
evalStateT :: Monad m => proxy tag -> StateT tag s m a -> s -> m a Source
Runs a StateT
with the given initial state
and returns the final value, discarding the final state.
execStateT :: Monad m => proxy tag -> StateT tag s m a -> s -> m s Source
Runs a StateT
with the given initial state
and returns the final state, discarding the final value.
State operations
get :: Monad m => proxy tag -> StateT tag s m s Source
Fetch the current value of the state within the monad.
put :: Monad m => proxy tag -> s -> StateT tag s m () Source
Set the value of the state within the monad.
Litfing other operations
liftCatch :: proxy tag -> Catch e m (a, s) -> Catch e (StateT tag s m) a Source
Lift a catchE
operation to the new monad.
liftCallCC' :: proxy tag -> CallCC m (a, s) (b, s) -> CallCC (StateT tag s m) a b Source
In-situ lifting of a callCC
operation to the new monad.
This version uses the current state on entering the continuation.
It does not satisfy the uniformity property (see Control.Monad.Signatures).