sig
  type 'a f
  val map : ('a -> 'b) -> 'a Functor.Functor.f -> 'b Functor.Functor.f
end