package ordering

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file ordering.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
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
OCaml

Innovation. Community. Security.