Pour autant que je sache, une fonction Haskell avec des contraintes de classes de type est compilée en interne en une fonction avec des arguments supplémentaires qui reçoivent des dictionnaires avec les implémentations nécessaires de chaque classe de type particulière.
- Existe-t-il d'autres possibilités de compilation des classes de types?
- Si oui, quels sont leurs (dés) avantages?
- Et quels compilateurs les utilisent?
Réponses:
JHC utilise une approche différente. Le langage intermédiaire du compilateur est un lambda-calcul typé de manière dépendante où il n'y a pas de distinction entre les types et les valeurs. JHC peut donc effectuer une analyse de cas sur le paramètre de type d'une fonction et appeler directement la fonction surchargée appropriée.
Le site Web de JHC aborde en détail l'implémentation, ainsi que ses avantages par rapport à l'implémentation standard du dictionnaire.
la source