functor (G_Src : E_SRC) ->
  functor (G_Dst : E_DST) ->
    sig val map : (G_Src.E.t -> G_Dst.edge) -> G_Src.t -> G_Dst.t end