Skip to main content



A Theory of Objects, Part 2

By Martin Abadi and Luca Cardelli

Discussion led by Andrew K. Hirsch on October 8, 2014

Preface (Scope):

This book develops a theory of objects as a foundation for object-oriented languages and programming. Our theory provides explanations for object-oriented notions in terms of a few basic primitives, and can be useful for the design and understanding of programming languages.

There is a well-established theory of functions, the lambda-calculus, that serves as a foundation for procedural languages. Our treatment of object-oriented languages largely parallels existing literature on procedural languages. However, our theory of objects is self-contained; it is the first that does not require explicit reference to functions or procedures.

We study object calculi, which are formalisms at the same level of abstraction as function calculi, but based exclusively on objects rather than functions. Unlike function calculi, object calculi are designed specifically for clarifying features of object-oriented languages. There is a wide spectrum of relevant object calculi, just as there is a wide spectrum of function calculi. We investigate untyped, simply-typed, and polymorphic calculi, with both functional and imperative semantics.

Book Website