Playlist | schedule page slides as PDF |

Polymorphism 1 — type paramaterization (5:40)

Extending Curly to support parametric polymorphism.

Polymorphism 2 — examples (5:35)

Examples for

`interp`and`typecheck`for`LAMBDA`and`@`. The`interp`additions are simple enough that we say no more about them; see`poly-lambda.rkt`.Polymorphism 3 —

`typecheck`(1:54)Type checking rules for

`LAMBDA`and`@`. See`poly-lambda.rkt`.Polymorphism 4 — polymorphic datatypes (4:54)

Parameterizing type definitions with respect to a type.

Polymorphism 5 — inference (5:13)

Infering polymorphism and type applications.

Polymorphism 6 — only non-polymorphic values (4:51)

Constraining polymorphism — allowing polymorphic bindings, but not polymorphic values — makes inference simpler and more consistent, and it helps explain why Plait never shows types with

`forall`.Polymorphism 7 — type identifiers in Plait (6:12)

Looking more at how polymorphism works in Plait (which is based on ML). This information should be helpful for HW 12.

Polymorphism 8 — polymorphic datatypes in Plait (4:23)

More about Plait (based on ML), specifically polymorophism and

`define-type`. This information also should be helpful for HW 12.Polymorphism 9 — parameterization over functions and types (3:27)

Abtracting functions over a combination of types and other functions. Watch this video only after trying HW 12.