module type GRAPH =
The client must provide an implementation of graphs which fullfills the
The type of graphs.
The type of nodes.
val iter_nodes :
(node -> unit) -> graph -> unit
iter_nodes f g applies
f on every nodes of the graph
order in which nodes are considered does not matter and may change
between different application of the function on the same graph.
However, each node must be considered exactly once.
val iter_successors :
(node -> unit) -> node -> unit
iter_successors f nd applies
f on every successors of the
nd in its graph. The order in which successors are
considere does not matter. The graph is not required to be
iter_successors f nd may apply
f an arbitrary
number of time the function
f on each of
nd's successors, as
long as this number is fixed.
val get :
node -> int
Every node must carry a transient integer field. The following
functions allows reading and updating this field. No assumption
is made by the module on the initial content of this field at
each function call. However, the client cannot make any
assumption on the final content too.
val set :
node -> int -> unit