Eq package:ghc-lib-parser

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)
Minimal complete definition: either == or /=.
An EqSpec is a tyvar/type pair representing an equality made in rejigging a GADT constructor
A type equality predicate.
A choice of equality relation. This is separate from the type Role because Phantom does not define a (non-trivial) equality relation.
Equality: ==
Name of the function
Equality Variable
~