sig   module type Comparable =     sig       type t       val equal : Utils.Comparable.t -> Utils.Comparable.t -> bool       val compare : Utils.Comparable.t -> Utils.Comparable.t -> int       val hash : Utils.Comparable.t -> int     end   module Int :     sig       type t = int       val equal : t -> t -> bool       val compare : t -> t -> int       val hash : t -> int     end   module Float :     sig       type t = float       val equal : t -> t -> bool       val compare : t -> t -> int       val hash : t -> int       val set_precision : float -> unit       val round : t -> int     end end