`sig
type ('a, 'witness) t = private {
compare : 'a -> 'a -> int;
sexp_of_t : 'a -> Sexplib.Sexp.t;
}
type ('a, 'b) comparator = ('a, 'b) Comparator.t
module type S =
sig
type t
type comparator_witness
val comparator :
(Comparator.S.t, Comparator.S.comparator_witness)
Comparator.comparator
end
module type S1 =
sig
type 'a t
type comparator_witness
val comparator :
('a Comparator.S1.t, Comparator.S1.comparator_witness)
Comparator.comparator
end
module Poly :
sig
type 'a t = 'a
type comparator_witness
val comparator : ('a t, comparator_witness) comparator
end
module S_to_S1 :
functor (S : S) ->
sig
type 'a t = S.t
type comparator_witness = S.comparator_witness
val comparator : ('a t, comparator_witness) comparator
end
module Make :
functor
(M : sig
type t
val sexp_of_t : Comparator.Make.t -> Sexplib.Sexp.t
val compare : Comparator.Make.t -> Comparator.Make.t -> int
end) ->
sig
type comparator_witness
val comparator : (M.t, comparator_witness) comparator
end
module Make1 :
functor
(M : sig
type 'a t
val compare :
'a Comparator.Make1.t -> 'a Comparator.Make1.t -> int
val sexp_of_t : 'a Comparator.Make1.t -> Sexplib.Sexp.t
end) ->
sig
type comparator_witness
val comparator : ('a M.t, comparator_witness) comparator
end
end`