Как происходит наследование в Haskell?

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

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

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

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

95
задан nbro 3 March 2017 в 16:23
поделиться