CDuce [1] is a functional language designed to program transformations
of XML documents. While it is related to mainstream (ML-like)
functional languages, its key difference is the use of semantic
subtyping and ad-hoc polymorphism (through the use of overloaded
functions).
Currently it just has a quite limited form of polymorphism targeted at
the definition of list and tree iterators [3]. Some work to define
polymorphic functions for XML transformers has already been done [2]
but this cannot handle higher-order functions, which jeopardize their
application to CDuce. Recent advances [4] make it possible to extend
semantic subtyping to polymorphic types, which yields a very rich type
algebra: parametric polymorphism, semantic subtyping, overloaded
functions, higher-order functions.
The goal of this project is to extend the CDuce language (and
possibly implement these extension into the compiler) in order to
tightly integrate parametric polymorphism with the rest of the
language:
(i) the integration should not jeopardize higher-order nor
overloading but should (ii) cleverly balance the richness of the
type-system with the usability of the language by seasoned
programmers.
Required background
Acquaintance with type theory and functional programming
[2] H. Hosoya, A. Frisch, and G. Castagna:
“Parametric Polymorphism for XML.” , In POPL '05, 32nd ACM Symposium on Principles of Programming Languages, pag. 50-62, ACM Press, 2005.
[3] G. Castagna and K. Nguyen: "Typed Iterators for XML." .In ICFP '08: 13th ACM-SIGPLAN International Conference on Functional Programming, April, 2008.