Como a derivação funciona em Haskell?
Algebraic Tipos de dados (ADTs) em Haskell podem se tornar instâncias de algunstypeclasses (comoShow
, Eq
) porderivado deles.
data Maybe a = Nothing | Just a
deriving (Eq, Ord)
Minha pergunta é: como issoderiving
trabalho, ou seja, como Haskell sabe como implementar as funções da classe de tipo derivada para o ADT derivado?
Além disso, por que éderiving
restrito apenas a certas classes? Por que não consigo escrever minha própria classe de letra que pode ser derivada?