Как реализован класс типов Eq для пользовательских типов?

Для какого-то определенного пользователем типа, такого как ниже, как работает реализация класса типов Eq? Это просто написать реализацию для таких вещей, как Int или Float. Но как сделать ловушку для всех пользовательских типов, так как для этого нужно будет делать такие вещи, как сопоставление с образцом для каждого возможного конструктора значений? Я не знаю ни одного синтаксиса, чтобы сделать это.

data Person = Person { firstName :: String
                     , lastName :: String
                     , age :: Int
                     } deriving (Eq)

Ответы на вопрос(1)

Ваш ответ на вопрос