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
|
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 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
;;
let opposite = function
| Lt -> Gt
| Eq -> Eq
| Gt -> Lt
;;
let reverse f a b = opposite (f a b)
module O = struct
let ( let= ) t f =
match t with
| (Lt | Gt) as result -> result
| Eq -> f ()
;;
end
|