`sig
module type V_SRC =
sig
type t
module V : Sig.HASHABLE
val fold_vertex : (V.t -> 'a -> 'a) -> Gmap.V_SRC.t -> 'a -> 'a
end
module type V_DST =
sig
type t
type vertex
val empty : unit -> Gmap.V_DST.t
val add_vertex : Gmap.V_DST.t -> Gmap.V_DST.vertex -> Gmap.V_DST.t
end
module Vertex :
functor (G_Src : V_SRC) ->
functor (G_Dst : V_DST) ->
sig
val map : (G_Src.V.t -> G_Dst.vertex) -> G_Src.t -> G_Dst.t
val filter_map :
(G_Src.V.t -> G_Dst.vertex option) -> G_Src.t -> G_Dst.t
end
module type E_SRC =
sig
type t
module E : Sig.ORDERED_TYPE
val fold_edges_e : (E.t -> 'a -> 'a) -> Gmap.E_SRC.t -> 'a -> 'a
end
module type E_DST =
sig
type t
type edge
val empty : unit -> Gmap.E_DST.t
val add_edge_e : Gmap.E_DST.t -> Gmap.E_DST.edge -> Gmap.E_DST.t
end
module Edge :
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
val filter_map :
(G_Src.E.t -> G_Dst.edge option) -> G_Src.t -> G_Dst.t
end
end`