functor (S : S->
  sig
    type 'a t = S.t
    type comparator_witness = S.comparator_witness
    val comparator : ('a t, comparator_witness) comparator
  end