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

Hints

Both the calculus for intersection types and bounded polymorphism are extensions of the simple subtyping calculus %l_{<=}. The subtyping rules for %l_{<=} are directly derived from the subtype relation presented in section subtypes. Make sure that %l_{<=} is well understood before proceeding with F_{ /\ } and F_{<=}.

Questions

    .so q4

Comments

You may prefer a tool such as fomega to exercise your typing skills.