Quelles sont les implémentations possibles des classes de types de Haskell et quels sont leurs (dés) avantages?


9

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?

4
Il y a pas mal de littérature sur le sujet. Commençons peut-être par la mise en œuvre des classes de types par J. Peterson, M. Jones. Vous pouvez également consulter les classes de types en tant qu'objets et implications par Oliveira et al, qui en parle dans le contexte de Scala, mais contient une section assez importante sur les travaux connexes.
Martin Berger


1
@MartinBerger en fait-il une réponse?
Suresh Venkat

L'autre se trouve ici .
Martin Berger

@Suresh Venkat, je ne voulais pas en faire une réponse car je ne suis pas sûr que ces deux-là soient les meilleures, voire les bonnes réponses. Cela fait un moment que je n'ai pas regardé les implémentations de langages fonctionnels. Peut-être que certains des bods résidents FP peuvent sonner.
Martin Berger

Réponses:


8

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.