functor
  (G : sig
         type t
         type vertex
         type edge
         val iter_vertex :
           (Oper.Choose.vertex -> unit) -> Oper.Choose.t -> unit
         val iter_edges_e :
           (Oper.Choose.edge -> unit) -> Oper.Choose.t -> unit
       end->
  sig val choose_vertex : G.t -> G.vertex val choose_edge : G.t -> G.edge end