Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 0.84 KB | None | 0 0
  1. module type ORDERING = sig
  2.     type t
  3.     val (<) : t -> t -> bool
  4.     val (>) : t -> t -> bool
  5.     val (=) : t -> t -> bool
  6.     val compare : t -> t -> int
  7. end
  8.  
  9. module Int_ordering : ORDERING with type t = int = struct
  10.     type t = int
  11.     let (<) = Pervasives.(<)
  12.     let (>) = Pervasives.(>)
  13.     let (=) = Pervasives.(=)
  14.     let compare = Pervasives.compare
  15. end
  16.  
  17. let int_ordering = (module Int_ordering : ORDERING with type t = int)
  18.  
  19. module String_ordering : ORDERING with type t = string = struct
  20.     type t = string
  21.     let (<) x y = String.compare x y < 0
  22.     let (>) x y = String.compare x y > 0
  23.     let (=) x y = String.compare x y = 0
  24.     let compare = String.compare
  25. end
  26.  
  27. let sort_pair (type a) ordering (x , y) =
  28.     let module Ordering = (val ordering : ORDERING with type t = a) in
  29.     if Ordering.(<) x y then (x, y) else
  30.     if Ordering.(>) x y then (y, x) else (x, y)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement