The recursive record semantics of objects revisited, submitted for publication.

In a call-by-value language, representing objects as recursive records requires using an unsafe fixpoint. We design, for a core language including extensible records, a type system which rules out unsafe recursion and still supports the reconstruction of a principal type. We illustrate the expressive power of this language with respect to object-oriented programming by introducing a sub-language for ``mixin-based'' programming.

[PostScript, .ps.gz]