previous up next contents
Précédent : Typage et objets Remonter : Typage et objets Suivant : Vers une intégration

Synthèse de type en présence de sous-typage

Participants : François Pottier, Didier Rémy

Didier Rémy s'est intéressé à la synthèse de type avec contraintes qui permet en particulier d'étendre le système de types de ML avec une notion de sous-typage. Cette extension du typage de ML semble très prometteuse et devrait s'appliquer également aux utilisations du typage pour effectuer des analyses statiques des programmes. Didier Rémy a étudié avec François Pottier les possibilités de simplification des contraintes (voir ci-dessous), un problème crucial tant pour la lisibilité des types synthétisés que pour l'efficacité des algorithmes.

Didier Rémy a montré la flexibilité de la méthode en adaptant celle-ci au typage de la concaténation des enregistrements, problème qui n'avait jusque là été résolu que dans les systèmes avec des types intersection. Cela pourrait avoir des applications au typage de l'héritage multiple dans les langages à objets.

François Pottier s'est intéressé à l'inférence de types pour un langage fonctionnel avec sous-typage. Un tel langage, muni de types enregistrement extensibles, peut être utilisé pour coder des constructions orientées objet (héritage et envoi de messages).

Un algorithme d'inférence de types à base de contraintes de sous-typage a été proposé par Smith. François Pottier a mis en évidence les limitations pratiques de cet algorithme, à savoir la trop grande complexité des ensembles de contraintes inférés, et s'est intéressé à la mise au point de méthodes de simplification des contraintes. Cette simplification est nécessaire tant à des fins de lisibilité que d'efficacité. Un algorithme a été mis au point et implémenté dans un prototype de petite taille. Cet algorithme est capable de réduire le type de certaines fonctions classiques de deux pages à deux lignes. Les résultats obtenus sont donc encourageants, tant sur le plan théorique que sur le plan pratique.


previous up next contents
Précédent : Typage et objets Remonter : Typage et objets Suivant : Vers une intégration