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