15-312 Foundations of Programming Languages
Lecture 17: Type Checking

At the beginning of this class we were quite careful to guarantee that every well-typed expression has a unique type. We relaxed our vigilance a bit when we came to constructs such as universal types, existential types, and recursive types, essentially because the question of unique typing became less obvious. In this lecture we first consider how to systematically design the language so that every expression has a unique type, and how this statement has to be modified when we consider subtyping. This kind of language will turn out to be impractical, so we consider a more relaxed notion of type checking, which is nonetheless quite a bit removed from the type inference offered by ML (which is left for another lecture).

[ Home | Schedule | Assignments | Software | Resources ]

Frank Pfenning