Indexed_monad.API
The complete interface of a Indexed Monad
.
include WITH_RETURN with type ('a, 'index) t := ('a, 'index) t
include WITH_RETURN with type ('a, 'index) t := ('a, 'index) t
include Indexed_bind.WITH_MAP_AND_JOIN
with type ('a, 'index) t := ('a, 'index) t
include WITH_RETURN with type ('a, 'index) t := ('a, 'index) t
val return : 'a -> ('a, 'index) t
Lift a value into a t
.
val compose_right_to_left :
('b -> ('c, 'index) t) ->
('a -> ('b, 'index) t) ->
'a ->
('c, 'index) t
Composing monadic functions using Kleisli Arrow (from right to left).
Lift a binary function that acts on arbitrary values into a function that acts t
values.
val lift3 :
('a -> 'b -> 'c -> 'd) ->
('a, 'index) t ->
('b, 'index) t ->
('c, 'index) t ->
('d, 'index) t
Lift a ternary function that acts on arbitrary values into a function that acts t
values.
Create a new t
, replacing all values of the given functor by given a value of 'a
.
Create a new t
, replacing all values in the given functor by unit
.
Infix flipped version of CORE.bind
.
Infix version of CORE.compose_left_to_right
.
Infix version of OPERATION.compose_right_to_left
.
Sequentially compose two actions, discarding any value produced by the first.
Sequentially compose two actions, discarding any value produced by the second.
Infix version of CORE.map
.
Flipped and infix version of CORE.map
.
Infix version of OPERATION.replace
.
Flipped and infix version of OPERATION.replace
.
Syntactic shortcuts for flipped version of CORE.bind
:
let* x = e in f
is equals to bind (fun x -> f) e
.