functor
  (T : sig type t val compare : Comparable.t -> Comparable.t -> int end->
  sig
    type comparable = T.t
    val ( >= ) : comparable -> comparable -> bool
    val ( <= ) : comparable -> comparable -> bool
    val ( = ) : comparable -> comparable -> bool
    val ( > ) : comparable -> comparable -> bool
    val ( < ) : comparable -> comparable -> bool
    val ( <> ) : comparable -> comparable -> bool
    val compare : comparable -> comparable -> int
    val ascending : comparable -> comparable -> int
    val descending : comparable -> comparable -> int
    val min : comparable -> comparable -> comparable
    val max : comparable -> comparable -> comparable
  end