Union_find.Makemodule X : VariableTypetype key = X.tval empty : 'a tadd ~merge key value uf adds the key key with associated value value to the union-find.
If key is already present in the union-find (including if it is no longer canonical), merge is used to combine the new value with the existing value associated with key.
find_canonical key uf returns the current canonical representative for key.
find_opt key uf returns the value associated with key, if any.
key does not need to be canonical.
union ~merge key1 key2 uf merges the equivalence classes associated with key1 and key2, calling merge on the corresponding values.
val explode : 'a t -> 'a list