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);