module type ORDONNE = sig type t val comp : t -> t -> int (* Ordre total sur t, renvoie un négatif pour inférieur, 0 pour égal, un positif pour supérieur *) end module Tri = functor (E : ORDONNE) -> struct let infegal x y = (E.comp x y <= 0) let max x y = if (E.comp x y < 0) then y else x end module TriEntier = Tri(Entier);; print_int (TriEntier.max 12 2);; print_newline ();; module TriChaine = Tri(Chaine);; print_string (TriChaine.max "abc" "abd");; print_newline ();;