sig
  module type Functor =
    sig
      type 'a f
      val map :
        ('-> 'b) ->
        'Deriving_Functor.Functor.f -> 'Deriving_Functor.Functor.f
    end
  module MonadFunctor :
    functor (M : Deriving_monad.Monad->
      sig type 'a f = 'M.m val map : ('-> 'b) -> 'a f -> 'b f end
  module Functor_option :
    sig type 'a f = 'a option val map : ('-> 'b) -> 'a f -> 'b f end
  module Functor_list :
    sig type 'a f = 'a list val map : ('-> 'b) -> 'a f -> 'b f end
  module Functor_map :
    functor (O : Map.OrderedType->
      sig
        type 'a f = 'Map.Make(O).t
        val map : ('-> 'b) -> 'a f -> 'b f
      end
end