`sig
module type G =
sig
type t
module V : Sig.COMPARABLE
module E :
sig
type t
type label
val label : Kruskal.G.E.t -> Kruskal.G.E.label
val dst : Kruskal.G.E.t -> V.t
val src : Kruskal.G.E.t -> V.t
end
val fold_vertex : (V.t -> 'a -> 'a) -> Kruskal.G.t -> 'a -> 'a
val iter_edges_e : (Kruskal.G.E.t -> unit) -> Kruskal.G.t -> unit
end
module Make :
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
module type UNIONFIND =
sig
type elt
type t
val init : Kruskal.UNIONFIND.elt list -> Kruskal.UNIONFIND.t
val find :
Kruskal.UNIONFIND.elt -> Kruskal.UNIONFIND.t -> Kruskal.UNIONFIND.elt
val union :
Kruskal.UNIONFIND.elt ->
Kruskal.UNIONFIND.elt -> Kruskal.UNIONFIND.t -> unit
end
module Generic :
functor (G : G) ->
functor (W : sig type t = G.E.label val compare : t -> t -> int end) ->
functor
(UF : sig
type elt = G.V.t
type t
val init : elt list -> t
val find : elt -> t -> elt
val union : elt -> elt -> t -> unit
end) ->
sig val spanningtree : Kruskal.G.t -> Kruskal.G.E.t list end
end`