package preface
Module Indexed_bind.Via
Parameters
module Core : Preface_specs.Indexed_bind.COREmodule Operation :
Preface_specs.Indexed_bind.OPERATION
with type ('a, 'index) t = ('a, 'index) Core.tmodule Infix :
Preface_specs.Indexed_bind.INFIX
with type ('a, 'index) t = ('a, 'index) Core.tmodule Syntax :
Preface_specs.Indexed_bind.SYNTAX
with type ('a, 'index) t = ('a, 'index) Core.tSignature
Type
type ('a, 'index) t = ('a, 'index) Core.tThe type held by the Monad.
Functions
bind f m passes the result of computation m to function f.
join remove one level of monadic structure, projecting its bound argument into the outer level.
val compose_left_to_right :
('a -> ('b, 'index) t) ->
('b -> ('c, 'index) t) ->
'a ->
('c, 'index) tComposing monadic functions using Kleisli Arrow (from left to right).
val compose_right_to_left :
('b -> ('c, 'index) t) ->
('a -> ('b, 'index) t) ->
'a ->
('c, 'index) tComposing 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) tLift 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 operators
module Infix :
Preface_specs.Indexed_bind.INFIX with type ('a, 'index) t := ('a, 'index) tInfix 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.
Flipped and infix version of OPERATION.replace.
Syntax
module Syntax :
Preface_specs.Indexed_bind.SYNTAX with type ('a, 'index) t := ('a, 'index) tSyntactic shortcuts for flipped version of CORE.bind:
let* x = e in f is equals to bind (fun x -> f) e.