|Playlist||schedule page slides as PDF|
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.
Parameterizing type definitions with respect to a type.
Polymorphism 5 — inference (5:13)
Infering polymorphism and type applications.
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.
Looking more at how polymorphism works in Plait (which is based on ML). This information should be helpful for HW 12.
More about Plait (based on ML), specifically polymorophism and define-type. This information also should be helpful for HW 12.
Abtracting functions over a combination of types and other functions. Watch this video only after trying HW 12.