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.