A trait for representing equivalence relations. It is important to
distinguish between a type that can be compared for equality or
equivalence and a representation of equivalence on some type. This
trait is for representing the latter.
An equivalence relation
is a binary relation on a type. This relation is exposed as
the equiv method of the Equiv trait. The relation must be:
reflexive: equiv(x, x) == true for any x of type T.
symmetric: equiv(x, y) == equiv(y, x) for any x and y of type T.
transitive: if equiv(x, y) == true and equiv(y, z) == true, then
equiv(x, z) == true for any x, y, and z of type T.
A trait for representing equivalence relations. It is important to distinguish between a type that can be compared for equality or equivalence and a representation of equivalence on some type. This trait is for representing the latter.
An equivalence relation is a binary relation on a type. This relation is exposed as the
equivmethod of theEquivtrait. The relation must be:equiv(x, x) == truefor any x of typeT.equiv(x, y) == equiv(y, x)for anyxandyof typeT.equiv(x, y) == trueandequiv(y, z) == true, thenequiv(x, z) == truefor anyx,y, andzof typeT.1.0, 2008-04-03
2.7