package lsp
Source file comparator.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66module type S = sig type t val compare : t -> t -> Ordering.t end module type OPS = sig type t val equal : t -> t -> bool val ( = ) : t -> t -> bool val ( >= ) : t -> t -> bool val ( > ) : t -> t -> bool val ( <= ) : t -> t -> bool val ( < ) : t -> t -> bool val ( <> ) : t -> t -> bool end module Operators (X : S) = struct type t = X.t let ( = ) a b = match X.compare a b with | Eq -> true | Gt | Lt -> false let equal = ( = ) let ( <> ) a b = not (a = b) let ( >= ) a b = match X.compare a b with | Gt | Eq -> true | Lt -> false let ( > ) a b = match X.compare a b with | Gt -> true | Lt | Eq -> false let ( <= ) a b = match X.compare a b with | Lt | Eq -> true | Gt -> false let ( < ) a b = match X.compare a b with | Lt -> true | Gt | Eq -> false end