Objectives
This section presents our first type calculi,
starting with a simple subtyping
calculus, which is later extended to
include overloading and generic types.
At the beginning of this section
a brief informal introduction is
given to the lambda calculus.
The calculi presented are typed
extensions of the lambda calculus.
For each type calculus, both type expressions
and value expressions are defined,
as well as type assignment rules
and refinement rules.
Points to emphasize
- subtypes -- typed lambda calculus
- overloading -- intersection types
- bounded polymorphism --
generics and inheritance
Hints
Both the calculus for intersection types
and bounded polymorphism are extensions
of the simple subtyping calculus
.
The subtyping rules for
are directly derived from the subtype
relation presented in section [subtypes].
Make sure that is well understood
before proceeding with
and .
Questions
.so q4
Comments
You may prefer a tool such as fomega
to exercise your typing skills.