functor (A : S) (B : S) (C : S->
  sig
    type elt_a = A.elt
    type elt_b = B.elt
    type elt_c = C.elt
    type 'a map_a = 'A.Map.t
    type 'a map_b = 'B.Map.t
    type 'a map_c = 'C.Map.t
    val proj2 :
      (elt_a -> elt_b) ->
      (elt_a -> elt_c) ->
      '-> ('-> '-> 'b) -> 'a map_a -> 'b map_c map_b
    val proj2_monadic :
      'parameters ->
      'method_handler ->
      (elt_a -> elt_b) ->
      (elt_a -> elt_c) ->
      '->
      ('parameters -> 'method_handler -> '-> '-> 'method_handler * 'b) ->
      'a map_a -> 'method_handler * 'b map_c map_b
  end