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