Time: Wednesday 24.11.2004, 14:30
Place: Room A4-108, Fr. Bajersvej 7
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.