Module Comparator

module Comparator: Comparator

type ('a, 'unique_id) t = private {
   compare :'a -> 'a -> int;
   sexp_of_t :'a -> Sexplib.Sexp.t;
}
type ('a, 'unique_id) t_ = ('a, 'unique_id) t 
module type Pre = sig .. end
module type Pre_binable = sig .. end
module type S = sig .. end
module type S_binable = sig .. end
module Make: 
functor (M : Pre) -> S with type t = M.t
module Make_binable: 
functor (M : Pre_binable) -> S_binable with type t = M.t
module type S1 = sig .. end
module Poly: S1  with type 'a t = 'a
module S_to_S1: 
functor (S : S) -> S1 with type 'a t = S.t with type comparator = S.comparator
module Make1: 
functor (M : sig
type 'a t 
val compare : 'a t -> 'a t -> int
val sexp_of_t : 'a t -> Sexplib.Sexp.t
end) -> S1 with type 'a t := 'a M.t