haskell
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).