...

/

Important Type Classes

Important Type Classes

Learn about the most important type classes.

Let’s continue by introducing a few more of the most important predefined Haskell type classes.

Comparing for equality with Eq

The type class Eq contains all types that can be compared for equality using ==. It is just as fundamental as Show and implemented by all basic Haskell data types except functions. Its definition is

data Eq a where
  (==), (/=) :: a -> a -> Bool
  x /= y = not (x == y)

While the class Eq contains two functions (the operators == and /=), only the == operator needs to be implemented for defining an instance of the class. This is because the /= operator contains a default implementation in the type class itself. Here it is defined as the negation of ==. This makes it sufficient to only implement equality. We say that defining only == is a minimal complete definition for an Eq instance.

Eq instances can also be derived. The derived implementation of == on custom data types first compares the constructors and then recursively compares the values inside them. ...