module type S = sig type t val (=) : t -> t -> bool val (<>) : t -> t -> bool val (<) : t -> t -> bool val (<=) : t -> t -> bool val (>=) : t -> t -> bool val (>) : t -> t -> bool val compare : t -> t -> int val max : t -> t -> t val min : t -> t -> t end module Char : S with type t = char module Bool : S with type t = bool module Int : S with type t = int module Int32 : S with type t = int32 module Int64 : S with type t = int64 module Float : S with type t = float module String : S with type t = string module List(P : S) : S with type t = P.t list module Option(P : S) : S with type t = P.t option