The
Eq class defines equality (
==) and inequality
(
/=). All the basic datatypes exported by the
Prelude
are instances of
Eq, and
Eq may be derived for any
datatype whose constituents are also instances of
Eq.
The Haskell Report defines no laws for
Eq. However, instances
are encouraged to follow these properties:
- Reflexivity x == x = True
- Symmetry x == y = y == x
- Transitivity if x == y && y == z =
True, then x == z = True
- Extensionality if x == y = True and
f is a function whose return type is an instance of
Eq, then f x == f y = True
- Negation x /= y = not (x ==
y)