| Copyright | (c) Edward Kmett & Sjoerd Visscher 2011 |
|---|---|
| License | BSD3 |
| Maintainer | ekmett@gmail.com |
| Stability | experimental |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Control.Monad.Representable.State
Description
A generalized State monad, parameterized by a Representable functor. The representation of that functor serves as the state.
Synopsis
- type State g = StateT g Identity
- runState :: Representable g => State g a -> Rep g -> (a, Rep g)
- evalState :: Representable g => State g a -> Rep g -> a
- execState :: Representable g => State g a -> Rep g -> Rep g
- mapState :: Functor g => ((a, Rep g) -> (b, Rep g)) -> State g a -> State g b
- newtype StateT g m a = StateT {}
- stateT :: Representable g => (Rep g -> m (a, Rep g)) -> StateT g m a
- runStateT :: Representable g => StateT g m a -> Rep g -> m (a, Rep g)
- evalStateT :: (Representable g, Monad m) => StateT g m a -> Rep g -> m a
- execStateT :: (Representable g, Monad m) => StateT g m a -> Rep g -> m (Rep g)
- mapStateT :: Functor g => (m (a, Rep g) -> n (b, Rep g)) -> StateT g m a -> StateT g n b
- liftCallCC :: Representable g => ((((a, Rep g) -> m (b, Rep g)) -> m (a, Rep g)) -> m (a, Rep g)) -> ((a -> StateT g m b) -> StateT g m a) -> StateT g m a
- liftCallCC' :: Representable g => ((((a, Rep g) -> m (b, Rep g)) -> m (a, Rep g)) -> m (a, Rep g)) -> ((a -> StateT g m b) -> StateT g m a) -> StateT g m a
- class Monad m => MonadState s (m :: Type -> Type) | m -> s where
Documentation
type State g = StateT g Identity Source #
A memoized state monad parameterized by a representable functor g, where
the representatation of g, Rep g is the state to carry.
The return function leaves the state unchanged, while >>= uses
the final state of the first computation as the initial state of
the second.
Arguments
state-passing computation to execute
initial state
return value and final state
Unwrap a state monad computation as a function.
(The inverse of state .)
Arguments
state-passing computation to execute
initial value
return value of the state computation
Arguments
state-passing computation to execute
initial value
final state
A state transformer monad parameterized by:
g- A representable functor used to memoize results for a stateRep gm- The inner monad.
The return function leaves the state unchanged, while >>= uses
the final state of the first computation as the initial state of
the second.
Instances
Instances details
Instance details
Defined in Control.Monad.Representable.State
Instance details
Defined in Control.Monad.Representable.State
Instance details
Defined in Control.Monad.Representable.State
Instance details
Defined in Control.Monad.Representable.State
Instance details
Defined in Control.Monad.Representable.State
evalStateT :: (Representable g, Monad m) => StateT g m a -> Rep g -> m a Source #
Evaluate a state computation with the given initial state and return the final value, discarding the final state.
evalStateTm s =liftMfst(runStateTm s)
execStateT :: (Representable g, Monad m) => StateT g m a -> Rep g -> m (Rep g) Source #
Evaluate a state computation with the given initial state and return the final state, discarding the final value.
execStateTm s =liftMsnd(runStateTm s)
liftCallCC :: Representable g => ((((a, Rep g) -> m (b, Rep g)) -> m (a, Rep g)) -> m (a, Rep g)) -> ((a -> StateT g m b) -> StateT g m a) -> StateT g m a Source #
Uniform lifting of a callCC operation to the new monad.
This version rolls back to the original state on entering the
continuation.
liftCallCC' :: Representable g => ((((a, Rep g) -> m (b, Rep g)) -> m (a, Rep g)) -> m (a, Rep g)) -> ((a -> StateT g m b) -> StateT g m a) -> StateT g m a 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 laws of a monad transformer.
class Monad m => MonadState s (m :: Type -> Type) | m -> s where #
Minimal definition is either both of get and put or just state
Methods
Return the state from the internals of the monad.
Replace the state inside the monad.
state :: (s -> (a, s)) -> m a #
Embed a simple state action into the monad.
Instances
Instances details
Since: mtl-2.3
Since: mtl-2.2
Since: mtl-2.3
Since: mtl-2.3
Since: mtl-2.3