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
discuss in particular the effect this extension has (or doesn't have) on
the run-time behavior of programs, which leads to a large debate
regarding static vs. dynamic type systems.