std.statet
The state monad transformer.
Types
type StateT s m a = s -> m { value : a, state : s }
Values
#[implicit]
let applicative ?mo : forall s m . [Monad m] -> Applicative (StateT s m)
A Functor
with application.
The following laws should hold:
wrap id <*> v = v
wrap (<<) <*> u <*> v <*> w = u <*> (v <*> w)
wrap f <*> wrap x = wrap (f x)
u <*> wrap y = wrap (\g -> g x) <*> u
A Functor
represents an action on a parameterized type which does not
change the structure with the mapped type.
The following laws should hold:
map id == id
map (f << g) == map f << map g
A generalised interface for imperatively sequencing actions
#[implicit]
let transformer : forall s . Transformer (StateT s)
#[implicit]
let alternative : forall s m . [Monad m] -> [Alternative m] -> Alternative (StateT s m)
A monoid on applicative functors.