úÎIÙF«#      !"None #+The size of the equivalence class, used by . $8Pointer to some other element of the equivalence class. %:This is the descriptive element of the equivalence class. ?The abstract type of an element of the sets we work on. It is 0 parameterised over the type of the descriptor. O(1);. Create a fresh point and return it. A fresh point is in 2 the equivalence class that contains only itself. O(1).  repr point% returns the representative point of  point's equivalence class. ,This method performs the path compresssion. &!Return the reference to the point's equivalence class's  descriptor. O(1)6. Return the descriptor associated with argument point's  equivalence class. O(1)%. Replace the descriptor of the point's equivalence class  with the second argument. O(1)<. Join the equivalence classes of the points (which must be E distinct). The resulting equivalence class will get the descriptor  of the second argument. Like 6, but sets the descriptor returned from the callback. BThe intention is to keep the descriptor of the second argument to D the callback, but the callback might adjust the information of the % descriptor or perform side effects. O(1) . Return True# if both points belong to the same  | equivalence class. O(1) . Returns True+ for all but one element of an equivalence  class. That is, if ps = [p1, .., pn] are all in the same 8 equivalence class, then the following assertion holds.   do rs <- mapM redundant ps / assert (length (filter (==False) rs) == 1) 5It is unspecified for which element function returns False, so be ! really careful when using this. '(#)*$%+&    '(#)*%$+&  Safe-Inferred ,+The size of the equivalence class, used by . -8Pointer to some other element of the equivalence class. .:This is the descriptive element of the equivalence class. ?The abstract type of an element of the sets we work on. It is 0 parameterised over the type of the descriptor. O(1);. Create a fresh point and return it. A fresh point is in 2 the equivalence class that contains only itself. O(1).  repr point% returns the representative point of  point's equivalence class. ,This method performs the path compresssion. /!Return the reference to the point's equivalence class's  descriptor. O(1)6. Return the descriptor associated with argument point's  equivalence class. O(1)%. Replace the descriptor of the point's equivalence class  with the second argument. O(1)<. Join the equivalence classes of the points (which must be E distinct). The resulting equivalence class will get the descriptor  of the second argument. Like 6, but sets the descriptor returned from the callback. BThe intention is to keep the descriptor of the second argument to D the callback, but the callback might adjust the information of the % descriptor or perform side effects. O(1) . Return True# if both points belong to the same  | equivalence class. O(1) . Returns True+ for all but one element of an equivalence  class. That is, if ps = [p1, .., pn] are all in the same 8 equivalence class, then the following assertion holds.   do rs <- mapM redundant ps / assert (length (filter (==False) rs) == 1) 5It is unspecified for which element function returns False, so be ! really careful when using this. 01,23-. 4 /     01,23.- 4 /  Safe-Inferred58Pointer to some other element of the equivalence class. 69This is the descriptive element of the equivalence class  and its rank. 78569: 78659:None5A monad transformer that adds union find operations. The p, parameter is the type of points. Uses the  Data.UnionFind.IntMap as the underlying union-find  implementation. ?Create a new point with the given descriptor. The returned is  only equivalent to itself.  Note that a / has its own identity. That is, if two points ? are equivalent then their descriptors are equal, but not vice  versa. O(1).  repr point% returns the representative point of  point's equivalence class. Return the descriptor of the !;Join the equivalence classes of the points. The resulting C equivalence class will get the descriptor of the second argument. "<Test if the two elements are in the same equivalence class.   liftA2 (==) (repr x) (repr y)  ;<= !" !" !";<= !">              union-find-0.2Data.UnionFind.STData.UnionFind.IOData.UnionFind.IntMapControl.Monad.Trans.UnionFindPointfreshrepr descriptor setDescriptormodifyDescriptorunionunion' equivalent redundant PointSupplynewPointSupply UnionFindT runUnionFindweightLinkInfodescrRefMkInfodescrPtreprInfo unUnionFindTswap