sig
val ( |> ) : 'a -> ('a -> 'b) -> 'b
val compose : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c
val compose_binop : ('a -> 'b) -> ('b -> 'b -> 'c) -> 'a -> 'a -> 'c
val ( %> ) : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c
val ( @@ ) : ('a -> 'b) -> 'a -> 'b
val id : 'a -> 'a
val const : 'a -> 'b -> 'a
val flip : ('a -> 'b -> 'c) -> 'b -> 'a -> 'c
val curry : ('a * 'b -> 'c) -> 'a -> 'b -> 'c
val uncurry : ('a -> 'b -> 'c) -> 'a * 'b -> 'c
val tap : ('a -> 'b) -> 'a -> 'a
val ( % ) : ('b -> 'c) -> ('a -> 'b) -> 'a -> 'c
val lexicographic :
('a -> 'a -> int) -> ('a -> 'a -> int) -> 'a -> 'a -> int
val finally : h:(unit -> 'b) -> f:(unit -> 'a) -> 'a
val finally1 : h:(unit -> 'c) -> ('a -> 'b) -> 'a -> 'b
val finally2 : h:(unit -> 'd) -> ('a -> 'b -> 'c) -> 'a -> 'b -> 'c
val opaque_identity : 'a -> 'a
module Monad :
functor (X : sig type t end) ->
sig
type 'a t = X.t -> 'a
val return : 'a -> 'a CCFun.Monad.t
val ( >|= ) : 'a CCFun.Monad.t -> ('a -> 'b) -> 'b CCFun.Monad.t
val ( >>= ) :
'a CCFun.Monad.t -> ('a -> 'b CCFun.Monad.t) -> 'b CCFun.Monad.t
end
end