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
type t =
| Lt
| Eq
| Gt
let of_int n =
if n < 0 then
Lt
else if n = 0 then
Eq
else
Gt
let to_int = function
| Lt -> -1
| Eq -> 0
| Gt -> 1
let to_string = function
| Lt -> "<"
| Eq -> "="
| Gt -> ">"
let neq = function
| Eq -> false
| Lt
| Gt ->
true
let is_eq = function
| Eq -> true
| Lt
| Gt ->
false
let min f x y =
match f x y with
| Eq
| Lt ->
x
| Gt -> y
let max f x y =
match f x y with
| Eq
| Gt ->
x
| Lt -> y