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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
(** [Ordering] is intended to make code that matches on the result of a comparison
more concise and easier to read.
For example, instead of writing:
{[
let r = compare x y in
if r < 0 then
...
else if r = 0 then
...
else
...
]}
you could simply write:
{[
match Ordering.of_int (compare x y) with
| Less -> ...
| Equal -> ...
| Greater -> ...
]}
*)
open! Import
type t =
| Less
| Equal
| Greater
[@@deriving_inline compare, enumerate, hash, sexp]
val compare : t -> t -> int
val all : t list
val hash_fold_t : Ppx_hash_lib.Std.Hash.state -> t -> Ppx_hash_lib.Std.Hash.state
val hash : t -> Ppx_hash_lib.Std.Hash.hash_value
include Ppx_sexp_conv_lib.Sexpable.S with type t := t
[@@@end]
include Equal.S with type t := t
(** [of_int n] is:
{v
Less if n < 0
Equal if n = 0
Greater if n > 0
v} *)
val of_int : int -> t
(** [to_int t] is:
{v
Less -> -1
Equal -> 0
Greater -> 1
v}
It can be useful when writing a comparison function to allow one to return
[Ordering.t] values and transform them to [int]s later. *)
val to_int : t -> int
module Export : sig
type _ordering = t =
| Less
| Equal
| Greater
end
|