úΊæ An 9 is an equivalence relation on a range of values of some  index type.  4 is an equivalence relation that equates two values L only when they are equal to each other. It is the most discerning such  relation possible. ; gives a canonical representative of the equivalence class  containing x:. It is chosen arbitrarily, but is always the same for a  given equivalence relation. 4This function is slightly unsafe. In particular, it's possible to build N the same equivalence relation by equating values in two different orders, M and the choice of canonical representatives will differ. You can either  think of a value of type % as an equivalence relation together O with a choice of canonical representatives, or you can consider this not a  pure function. Since  is not an instance of Eq and equality 4 is not observable, both perspectives are valid. DDetermines if two values are equivalent under the given equivalence  relation. EDetermines if all of the given values are equivalent under the given  equivalence relation. FConstruct the equivalence relation obtained by equating the given two 0 values. This combines equivalence classes. IConstruct the equivalence relation obtained by equating all of the given 0 values. This combines equivalence classes.      persistent-equivalence-0.1Data.Equivalence.Persistent EquivalenceemptyEquivalencereprequiv equivalentequate equateAllranksparents arrayFrom reprHelper