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