functor (G : G->
  sig
    val iter :
      ?pre:(G.V.t -> unit) -> ?post:(G.V.t -> unit) -> Traverse.G.t -> unit
    val prefix : (G.V.t -> unit) -> Traverse.G.t -> unit
    val postfix : (G.V.t -> unit) -> Traverse.G.t -> unit
    val iter_component :
      ?pre:(G.V.t -> unit) ->
      ?post:(G.V.t -> unit) -> Traverse.G.t -> G.V.t -> unit
    val prefix_component : (G.V.t -> unit) -> Traverse.G.t -> G.V.t -> unit
    val postfix_component : (G.V.t -> unit) -> Traverse.G.t -> G.V.t -> unit
    val fold : (G.V.t -> '-> 'a) -> '-> Traverse.G.t -> 'a
    val fold_component :
      (G.V.t -> '-> 'a) -> '-> Traverse.G.t -> G.V.t -> 'a
    type iterator
    val start : Traverse.G.t -> Traverse.Dfs.iterator
    val step : Traverse.Dfs.iterator -> Traverse.Dfs.iterator
    val get : Traverse.Dfs.iterator -> G.V.t
    val has_cycle : Traverse.G.t -> bool
  end