functor (O : Map.OrderedType->
  sig type 'a f = 'Map.Make(O).t val map : ('-> 'b) -> 'a f -> 'b f end