-- MF TODO: isn't the find supposed to update uf?
find :: UF -> Int -> Int
find uf = (descriptor $ ps uf) . (repr $ ps uf) . (point uf)
find :: UF -> Int -> Int
find uf = (descriptor $ ps uf) . (repr $ ps uf) . (point uf)
find uf = (descriptor $ ps uf) . (repr $ ps uf) . (point uf)