Il est bien connu que les classes de types de style Haskell et les modules de style ML offrent des mécanismes différents pour la spécification de interfaces . Ils sont (peut-être) équivalents en termes de puissance, mais dans la pratique, chacun a ses propres avantages et inconvénients.
Étant donné que je suis un peu inclusionniste en ce qui concerne les caractéristiques de la langue, ma question est la suivante : Quelles sont les principales difficultés théoriques liées à l'ajout de modules de style ML à Haskell ? Je suis intéressé par des réponses du type suivant :
-
Quelles sont les caractéristiques des systèmes de types existants qui interagissent mal avec les modules de style ML ? (Un exemple de mauvaise interaction est GADT et les dépendances fonctionnelles, même si les fundeps sont techniquement équivalents aux types associés).
-
Quelles sont les choses auxquelles il faut renoncer du côté du compilateur pour pouvoir compiler des modules de style ML ?
-
Comment les modules de style ML interagissent-ils avec l'inférence de type ?
Lecture connexe :