Module Make2.Syntax

Monadic operators, see Monad.Syntax.S2 for more.

val (>>=) : ('a, 'e) M.t -> ('a -> ('b, 'e) M.t) -> ('b, 'e) M.t

m >>= f is bind m f

val (>>|) : ('a, 'e) M.t -> ('a -> 'b) -> ('b, 'e) M.t

m >>= f is map m ~f

val (>=>) : ('a -> ('b, 'e) M.t) -> ('b -> ('c, 'e) M.t) -> 'a -> ('c, 'e) M.t

f >=> g is fun x -> f x >>= g

val (!!) : 'a -> ('a, 'e) M.t

!!x is return x

val (!$) : ('a -> 'b) -> ('a, 'e) M.t -> ('b, 'e) M.t

!$f is Lift.unary f

val (!$$) : ('a -> 'b -> 'c) -> ('a, 'e) M.t -> ('b, 'e) M.t -> ('c, 'e) M.t

!$$f is Lift.binary f

val (!$$$) : ('a -> 'b -> 'c -> 'd) -> ('a, 'e) M.t -> ('b, 'e) M.t -> ('c, 'e) M.t -> ('d, 'e) M.t

!$$$f is Lift.ternary f

val (!$$$$) : ('a -> 'b -> 'c -> 'd -> 'e) -> ('a, 's) M.t -> ('b, 's) M.t -> ('c, 's) M.t -> ('d, 's) M.t -> ('e, 's) M.t

!$$$$f is Lift.quaternary f

val (!$$$$$) : ('a -> 'b -> 'c -> 'd -> 'e -> 'f) -> ('a, 's) M.t -> ('b, 's) M.t -> ('c, 's) M.t -> ('d, 's) M.t -> ('e, 's) M.t -> ('f, 's) M.t

!$$$$$f is Lift.quinary f