functor (M : Map.S->
  functor (P : sig type t = M.key val to_string : t -> string end->
    sig
      val make_equal :
        ('-> '-> bool) ->
        ('-> string) -> ?msg:string -> 'M.t -> 'M.t -> unit
      val make_not_equal :
        ('-> '-> bool) ->
        ('-> string) -> ?msg:string -> 'M.t -> 'M.t -> unit
    end