Module Relude_StateT.State
type t('a, 's)
= WithMonad(Relude_Identity.Monad).t('a, 's)
=
;|
StateT('s => Relude_Identity.Monad.t(('a, 's)))
StateT represents an effectful function from a state value of type 's to a result value 'a and a next state of type 's. This version of StateT has 'a on the left for consistency with other Reason types like Result/IO/Validation/etc.
let runStateT: 's => t('a, 's) => Relude_Identity.Monad.t(('a, 's));
let evalStateT: t('a, 's) => 's => Relude_Identity.Monad.t('a);
let execStateT: t('a, 's) => 's => Relude_Identity.Monad.t('s);
let mapStateT: (Relude_Identity.Monad.t(('a, 's)) => Relude_Identity.Monad.t(('b, 's))) => t('a, 's) => t('b, 's);
let withStateT: ('s => 's) => t('a, 's) => t('a, 's);
let get: t('s, 's);
let gets: ('s => 'a) => t('a, 's);
let put: 's => t(unit, 's);
let modify: ('s => 's) => t('s, 's);
let modify_: ('s => 's) => t(unit, 's);
let map: ('a => 'b) => t('a, 's) => t('b, 's);
let pure: 'a => t('a, 's);
let apply: t('a => 'b, 's) => t('a, 's) => t('b, 's);
let bind: t('a, 's) => ('a => t('b, 's)) => t('b, 's);