(* Munir les paires d'entiers d'un ordre total *) module IntPair = struct type t = int * int (* on commence par une fonction comparant deux entiers *) let cmp x y = if x < y then -1 else if x = y then 0 else 1 (* on l'utilise ensuite pour définir un ordre lexicographique sur les paires d'entiers *) let compare (x1, y1) (x2, y2) = let c = cmp x1 x2 in if c <> 0 then c else cmp y1 y2 (* note : on pouvait bien sûr utiliser directement Pervasives.compare sur une paires d'entiers, avec le même résultat, mais on a préféré ici l'écrire nous-même. *) end (* On peut alors appliquer le foncteur de l'exercice précédent pour obtenir des ensembles de paires d'entiers. *) module type ELT = sig type t val compare: t -> t -> int end module Set(E: ELT) = struct (* voir exercice 2.43 *) end module SetIntPair = Set(IntPair)
This document was generated using caml2html