Playlist | schedule page slides as PDF |
Polymorphism 1 — type paramaterization (3:39)
Extending Moe to support parametric polymorphism.
Polymorphism 2 — examples (3:10)
Examples for interp and typecheck for FUN and type application (e[T]). The interp additions are simple enough that we say no more about them; see poly_lambda.rhm.
Polymorphism 3 — typecheck (1:30)
Type checking rules for FUN and type application (e[T]). See poly_lambda.rhm.
Polymorphism 4 — polymorphic datatypes (3:51)
Parameterizing type definitions with respect to a type.
Polymorphism 5 — inference (3:53)
Inferring polymorphism and type applications.
Polymorphism 6 — only non-polymorphic values (2:49)
Constraining polymorphism — allowing polymorphic bindings, but not polymorphic values — makes inference simpler and more consistent, and it helps explain why Shplait never shows types with forall.
Polymorphism 7 — type identifiers in Shplait (5:40)
Looking more at how polymorphism works in Shplait (which is based on ML). This information should be helpful for HW 12.
Polymorphism 8 — polymorphic datatypes in Shplait (3:19)
More about Shplait (based on ML), specifically polymorphism and type definitions. This information should also be helpful for HW 12.
Polymorphism 9 — parameterization over functions and types (3:42)
Abstracting functions over a combination of types and other functions. Watch this video only after trying HW 12.