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