functor (G : G) ->
  functor (W : sig type t = G.E.label val compare : t -> t -> int end) ->
    sig val spanningtree : Kruskal.G.t -> Kruskal.G.E.t list end