15-312 Foundations of Programming Languages
Lecture 11: Parametric Polymorphism

After tying together static and dynamic semantics in the form of the type preservation and progress theorems, we have spent a few lectures enriching our basic computational mechanisms by introducing exceptions and continuations. In the next few lectures we return to the basic questions behind types and investigate extensions to the type system that are, to a large degree, independent of the underlying computational mechanisms.

The first of these will be polymorphism or, more specifically, parametric polymorphism. This allows a given expression to work at more than one type---in fact, at an infinite family of related types. We present two different formulations of parametric polymorphism: one where programs explicit abstract over types, and one where types are left implicit. Standard ML adopts a restricted form of the latter; we will take the first as a more robust formulation for most of the remainder of the course.

[ Home | Schedule | Assignments | Software | Resources ]

Frank Pfenning