Playlist | schedule page slides as PDF |

Polymorphism 1 — type paramaterization (4:28)

Extending our language to support parametric polymorphism.

Polymorphism 2 — type inference (3:47)

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:57)Type checking rules for

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

Parameterizing type definitions with respect to a type.

Polymorphism 5 — inference (5:11)

Infering polymorphism and type applications.

Polymorphism 6 — first-class vs. first-order (5:06)

Constraining polymorphism to first-order forms (i.e., allowing polymorphic bindings, but not polymorphic values) makes inference simpler and/or more consistent, and it helps explain why

`plai-typed`never shows types with`forall`.Polymorphism 7 — polymorphism in

`plai-typed`(3:14)Looking more at polymorphism works in

`plai-typed`. This information should be helpful for HW 11.Polymorphism 8 — polymorphic datatypes in

`plai-typed`(4:01)More about

`plai-typed`, specifically polymorophism and`define-type`. This information also should be helpful for HW 11.Polymorphism 9 — parameterization over functions and types (3:02)

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