A Haskell Typeclass that can be used to check for equivalence or non-equivalence of types.

Automatic Defining Eq

If you don’t define the equals method, Haskell will create the Eq method:

  • The type is only equal to itself
  • Will check types recursively, if the pairwise equalities are equal then its equal
class Eq a where
	(==), (/=) :: a -> a -> Bool
	x /= y = not (x == y)
	x == y = not (x /= y)

Custom Defined Eq Example

data First = Pair Int Int
 
instance Eq First where
	(Pair x _) == (Pair y _) = (x == y)