Indexed_monad_plus.API
The complete interface of an Indexed_monad_plus
.
include Indexed_monad.WITH_RETURN with type ('a, 'index) t := ('a, 'index) t
include Indexed_monad.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 Indexed_monad.WITH_RETURN with type ('a, 'index) t := ('a, 'index) t
val return : 'a -> ('a, 'index) t
Lift a value into a t
.
val neutral : ('a, 'index) t
The neutral element of the 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.
times_nel n x
apply combine
on x
n
times. If n
is lower than 1
the function will returns None
.
val reduce_nel : ('a, 'index) t Preface_core.Nonempty_list.t -> ('a, 'index) t
Reduce a Nonempty_list.t
using combine
.
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
.
times n x
apply combine
on x
n
times. If n
is lower than 1
the function will returns neutral
.
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
.
Infix version of CORE.combine
.
Syntactic shortcuts for flipped version of CORE.bind
:
let* x = e in f
is equals to bind (fun x -> f) e
.