15-312 Foundations of Programming Languages
Lecture 12: Data Abstraction

In this lecture we discuss data abstraction and how it must be supported in a type system. The appropriate type-theoretic notion is that of an existential types. Existential types are dual to universal polymorphic types, but at the core they both incorporate parametricity. It is parametricity that guarantees that data abstraction, the hiding of the implementation of data types, cannot be violated.

Existential types are not directly supported in ML, but folded into the module system. We talk about the relation between modules and existential types and consider some examples.

[ Home | Schedule | Assignments | Software | Resources ]

Frank Pfenning