sig
  module type Mappable =
    sig
      type 'a mappable
      val map : ('-> 'b) -> 'a mappable -> 'b mappable
    end
  module type OrderedType = sig type t val compare : t -> t -> int end
end