The type held by the state monad.
promote monad into the transformation.
Unwrap the state computation and extract the current value.
Unwrap the state computation and extract the current state.
Unwrap the state computation.
Lift a function into a state.
Returns the current state.
Replace the state with the given one.
Modify the state applying the given function.
val gets : (state -> 'a) -> 'a t
Apply a function to the current state and return it.
Monad
Type
Type
Functions
include Indexed_bind.WITH_BIND with type ('a, 'index) t := 'a t
val bind : ('a -> 'b t) -> 'a t -> 'b t
bind f m
passes the result of computation m
to function f
.
include Indexed_bind.WITH_MAP_AND_JOIN with type ('a, 'index) t := 'a t
val map : ('a -> 'b) -> 'a t -> 'b t
Mapping over from 'a
to 'b
.
val join : 'a t t -> 'a t
join
remove one level of monadic structure, projecting its bound argument into the outer level.
include Indexed_bind.WITH_KLEISLI_COMPOSITION with type ('a, 'index) t := 'a t
val compose_left_to_right : ('a -> 'b t) -> ('b -> 'c t) -> 'a -> 'c t
Composing monadic functions using Kleisli Arrow (from left to right).
val compose_right_to_left : ('b -> 'c t) -> ('a -> 'b t) -> 'a -> 'c t
Composing monadic functions using Kleisli Arrow (from right to left).
val lift : ('a -> 'b) -> 'a t -> 'b t
Mapping over t
from 'a
to 'b
.
val lift2 : ('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t
Lift a binary function that acts on arbitrary values into a function that acts t
values.
val lift3 : ('a -> 'b -> 'c -> 'd) -> 'a t -> 'b t -> 'c t -> 'd t
Lift a ternary function that acts on arbitrary values into a function that acts t
values.
val replace : 'a -> 'b t -> 'a t
Create a new t
, replacing all values of the given functor by given a value of 'a
.
val void : 'a t -> unit t
Create a new t
, replacing all values in the given functor by unit
.
Infix operators
val (=|<) : ('a -> 'b) -> 'a t -> 'b t
Infix version of CORE
.map.
val (>|=) : 'a t -> ('a -> 'b) -> 'b t
Infix flipped version of CORE
.map.
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
Infix flipped version of CORE
.bind.
val (=<<) : ('a -> 'b t) -> 'a t -> 'b t
Infix version of CORE
.bind.
val (>=>) : ('a -> 'b t) -> ('b -> 'c t) -> 'a -> 'c t
Infix version of CORE
.compose_left_to_right.
val (<=<) : ('b -> 'c t) -> ('a -> 'b t) -> 'a -> 'c t
Infix version of OPERATION
.compose_right_to_left.
val (>>) : unit t -> 'b t -> 'b t
Sequentially compose two actions, discarding any value produced by the first.
val (<<) : 'a t -> unit t -> 'a t
Sequentially compose two actions, discarding any value produced by the second.
val (<$>) : ('a -> 'b) -> 'a t -> 'b t
Infix version of CORE
.map.
val (<&>) : 'a t -> ('a -> 'b) -> 'b t
Flipped and infix version of CORE
.map.
val (<$) : 'a -> 'b t -> 'a t
Infix version of OPERATION
.replace.
val ($>) : 'a t -> 'b -> 'b t
Flipped and infix version of OPERATION
.replace.
Syntax
val let* : 'a t -> ('a -> 'b t) -> 'b t
Syntactic shortcuts for flipped version of CORE
.bind:
let* x = e in f
is equals to bind (fun x -> f) e
.
val let+ : 'a t -> ('a -> 'b) -> 'b t
let
operator for mapping.