Proposition de stage M2
TITRE: Polymorphisme pour XML

CDuce [1] est un langage fonctionnel généraliste adapté à l'écriture de transformations de documents XML. Bien que proche des langages fonctionnels impurs (à la ML), il se distingue par son utilisation du sous-typage sémantique et d'un polymorphisme ad-hoc, via l'utilisation de fonctions surchargées. Une forme limitée de polymorphisme paramétrique y a été rajouté récemment permettant la définition (et le typage) d'itérateurs sur les listes et les arbres [3]. Des travaux pour la définition de fonctions polymorphes pour XML existent [1] mais ils ne sont pas capables de capturer les fonctions d'ordre supérieur, ce qui qui empeche leur application à CDuce. D'autres avancées récentes ont montré qu'il était possible de généraliser la notion de sous-typage sémantique aux types polymorphes [4]. On se retrouve donc en présence d'une algèbre de types très riche: polymorphisme, sous-typage sémantique, fonctions surchargées, ordre supérieur.

Le but du stage est d'étendre le langage CDuce (et, eventuellement, l'implanter ces extensions au sein du compilateur) de manière à y intégrer les traits de polymorphisme paramétrique mentionnés: (i) en ne sacrifiant ni l'ordre supérieur, ni la surcharge, mais (ii) en trouvant un juste équilibre entre richesse du système de type et facilité d'utilisation du langage pour le programmeur.

Pré-requis
Connaissance préalable de théorie des types et de la programmation fonctionnel.
Références
Contacts
Stage coencadré par Kim Nguyen

Giuseppe Castagna : Laboratoire PPS, Université Paris 7.
Kim Nguyen : Laboratoire de Recherche Informatique (LRI), Université Paris 11.