module Comparator:sig..end
One of the type parameters is a phantom parameter used to distinguish comparators
potentially built on different comparison functions. In particular, we want to
distinguish those using polymorphic compare and those using a monomorphic compare.
type ('a, 'witness) t = private {
|
compare : |
|
sexp_of_t : |
type('a, 'b)comparator =('a, 'b) t
module type S =sig..end
module type S1 =sig..end
module Poly:S1with type 'a t = 'a
module S_to_S1:
Make functors mint fresh types that are used as the phantom
comparator_witnesses.module Make:
module Make1: