functor (X : GRAPH) ->
  sig val fold : 'a -> (X.node -> X.node -> 'a -> 'a) -> X.graph -> 'a end