functor (G : G->
  functor
    (W : sig
           type label = G.E.label
           type t
           val weight : label -> t
           val compare : t -> t -> int
           val add : t -> t -> t
           val zero : t
         end->
    sig
      val spanningtree : Prim.G.t -> Prim.G.E.t list
      val spanningtree_from : Prim.G.t -> G.V.t -> Prim.G.E.t list
    end