Как происходит вывод в Haskell?

алгебраическая Типы данных (ADTs) в Haskell могут автоматически стать экземплярами некоторыхtypeclasseс (какShow, Eq) отвывода от них.

data  Maybe a  =  Nothing | Just a
  deriving (Eq, Ord)

Мой вопрос, как этоderiving работать, то есть откуда Хаскель знает, как реализовать функции производного класса типов для производного ADT?

Кроме того, почемуderiving ограничено только определенными типами классов? Почему я не могу написать свой собственный класс типов, который можно получить?

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

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