Add Comparable.Operators

Signed-off-by: Etienne Millon <me@emillon.org>
This commit is contained in:
Etienne Millon 2018-08-07 09:27:37 +00:00
parent ac601f8f48
commit 4f1d1a0ea5
2 changed files with 49 additions and 0 deletions

View File

@ -2,3 +2,41 @@ module type S = sig
type t
val compare : t -> t -> Ordering.t
end
module type OPS = sig
type t
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 (>=) 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

View File

@ -2,3 +2,14 @@ module type S = sig
type t
val compare : t -> t -> Ordering.t
end
module type OPS = sig
type t
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) : OPS with type t = X.t