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