functor (M : Pre->
  sig
    type t = M.t
    val compare : t -> t -> int
    val t_of_sexp : Sexplib.Sexp.t -> t
    val sexp_of_t : t -> Sexplib.Sexp.t
    type comparator
    val comparator : (t, comparator) t_
  end