val compose_binop : ('a ‑> 'b) ‑> ('b ‑> 'b ‑> 'c) ‑> 'a ‑> 'a ‑> 'ccompose_binop f g is fun x y -> g (f x) (f y)
Example (partial order):
List.sort (compose_binop fst CCInt.compare) [1, true; 2, false; 1, false]
val tap : ('a ‑> _) ‑> 'a ‑> 'atap f x evaluates f x, discards it, then returns x. Useful
in a pipeline, for instance:
CCArray.(1 -- 10)
|> tap CCArray.shuffle
|> tap @@ CCArray.sort Pervasives.compareval lexicographic : ('a ‑> 'a ‑> int) ‑> ('a ‑> 'a ‑> int) ‑> 'a ‑> 'a ‑> intLexicographic combination of comparison functions
val finally : h:(unit ‑> _) ‑> f:(unit ‑> 'a) ‑> 'afinally h f calls f () and returns its result. If it raises, the
same exception is raised; in any case, h () is called after
f () terminates.
val finally1 : h:(unit ‑> _) ‑> ('a ‑> 'b) ‑> 'a ‑> 'bfinally1 ~h f x is the same as f x, but after the computation,
h () is called whether f x rose an exception or not.
val finally2 : h:(unit ‑> _) ‑> ('a ‑> 'b ‑> 'c) ‑> 'a ‑> 'b ‑> 'cfinally2 ~h f x y is the same as f x y, but after the computation,
h () is called whether f x y rose an exception or not.
val opaque_identity : 'a ‑> 'aopaque_identity x is like x, but prevents Flambda from using x's
definition for optimizing it (flambda is an optimization/inlining pass
in OCaml >= 4.03).
Functions with a fixed domain are monads in their codomain