package grace

  1. Overview
  2. Docs
A fancy diagnostics library that allows your compilers to exit with grace

Install

dune-project
 Dependency

Authors

Maintainers

Sources

grace-0.3.0.tbz
sha256=6948979d6ffb5e596773baead81e9ceef36726d6956261bdd62abb2666a45bfc
sha512=db8b39cc9a77d919ab3123bb4047bb6c672c61db9fc6810951e267b2b113c4ac07266ef57188c6db0c02cb4d43d054204cd66ebc91648dbd1da1228022b0e67b

doc/src/grace.std/comparable.ml.html

Source file comparable.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
module type S = sig
  type t

  val ( >= ) : t -> t -> bool
  val ( <= ) : t -> t -> bool
  val ( > ) : t -> t -> bool
  val ( < ) : t -> t -> bool
  val ( = ) : t -> t -> bool
  val ( <> ) : t -> t -> bool
  val compare : t -> t -> int
  val equal : t -> t -> bool
  val min : t -> t -> t
  val max : t -> t -> t
end

module Make (T : sig
    type t

    val compare : t -> t -> int
  end) : S with type t := T.t = struct
  include T

  let equal x y = compare x y = 0
  let ( >= ) x y = compare x y >= 0
  let ( <= ) x y = compare x y <= 0
  let ( > ) x y = compare x y > 0
  let ( < ) x y = compare x y < 0
  let ( = ) x y = equal x y
  let ( <> ) x y = compare x y <> 0
  let min x y = if x <= y then x else y
  let max x y = if x >= y then x else y
end

type 'a t = 'a -> 'a -> int

let lift compare ~f = fun x y -> compare (f x) (f y)
let reverse compare x y = compare y x

let pair cmp1 cmp2 (x1, x2) (y1, y2) =
  match cmp1 x1 y1 with
  | 0 -> cmp2 x2 y2
  | n -> n
;;