This is an implementation of Tarjan's Union-Find algorithm (Robert E. Tarjan. "Efficiency of a Good But Not Linear Set Union Algorithm", JACM 22(2), 1975) in order to maintain an equivalence relation.
This implementation is a port of the union-find
package using the
ST
monad transformer (instead of the IO
monad).