functor
(G : G) (A : sig
type data
type edge = G.E.t
type vertex = G.V.t
type g = G.t
val direction : direction
val join : data -> data -> data
val equal : data -> data -> bool
val analyze : edge -> data -> data
end) ->
sig val analyze : (G.V.t -> A.data) -> A.g -> G.V.t -> A.data end