Até onde eu sei, uma função Haskell com restrições de classes de tipo é compilada internamente para uma função com argumentos adicionais que recebem dicionários com as implementações necessárias de cada classe de tipo específica.
- Existem outras possibilidades de compilação de classes de tipo?
- Em caso afirmativo, quais são suas (des) vantagens?
- E quais compiladores os usam?
Respostas:
O JHC usa uma abordagem diferente. A linguagem intermediária do compilador é um cálculo lambda de tipo dependente, em que não há distinção entre tipos e valores. Portanto, o JHC pode executar uma análise de caso no parâmetro de tipo de uma função e chamar diretamente a função sobrecarregada correta.
O site do JHC detalha a implementação, bem como suas vantagens sobre a implementação padrão de aprovação de dicionários.
fonte