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.