Up

Module Comparator

A type-indexed value that allows one to compare (and for generating error messages, serialize) values of the type in question.

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.

Signature

type ('a, 'witness) t = private {
compare
: 'a -> 'a -> int ;
sexp_of_t
: 'a -> Sexplib.Sexp.t ;
}
type ('a, 'b) comparator = ('a, 'b) t
module type S = sig .. end
module type S1 = sig .. end
module Poly : S1 with type 'a t = 'a
module S_to_S1 (S : S) : S1 with type 'a t = S.t with type comparator_witness = S.comparator_witness
module Make (M : sig .. end) : S with type t := M.t
Make creates a comparator value and its phantom comparator_witness type for a nullary type.
module Make1 (M : sig .. end) : S1 with type 'a t := 'a M.t
Make1 creates a comparator value and its phantom comparator_witness type for a unary type.