Pascal Zimmer

BRICS, Aarhus University, Denmark.

Time: Wednesday 24.11.2004, 14:30
Place: Room A4-108, Fr. Bajersvej 7

Generalised recursion in ML and mixins

Functional languages, like Scheme or ML, allow to define recursive values, but this construct is generally limited to recursive functions only or to static data structures. This does exclude some constructs, namely the mutually recursive modules or the recursive extensible records for example, while semantically those are not dangerous, in the sense that they can be correctly evaluated (which is not the case for all constructions).

In 2002, Gérard Boudol designed a specific type system to decide if a recursion is dangerous or not. This system uses the notion of degree to determine if a variable is used or not while evaluating an expression. Starting from this basis, we progressively enriched a core ML language, first by an object calculus based upon extensible records, then by a syntactical layer of mixins, thus mixing all the advantages of full functionality and object programming, in particular multiple inheritance. I will also present a prototype interpreter for this language, called MlObj, that helped greatly to ease the design of the type system and the new constructs, by allowing a fast experimentation of our ideas, going back and forth from theory to practice.