Playlist | schedule page slides as PDF |
Inference 1 — introduction (1:37)
Introduction to type inference.
Inference 2 — type inference (3:06)
Basic type inference in action.
Inference 3 — function calls (2:11)
Type inference for function calls.
Inference 4 — occurs check (1:43)
Type inference needs to avoid creating cyclic type equivalences, which could otherwise happen for expressions that have no type.
Inference 5 — unify! and resolve
(1:17)
The unify! function will replace any use of equal? in the type checker, and it needs a resolve helper function.
Inference 6 — representing type variables (1:27)
Representing type variables in our new, inferencing type checker.
Inference 7 — unify! examples (5:36)
Examples for the unify! function.
Inference 8 — unification (4:06)
Unification is the algorithm for assigning types to type variables. The unify! function will need to implement this algorithm.
Inference 9 — unify! (3:46)
Implementing unify!.
Inference 10 — typecheck (2:41)
Updating typecheck to use unify!. See infer-lambda.rkt.
Inference 11 — reporting errors (0:59)
Type errors with unification can’t point to one wrong expression, but they can report a mismatch and one or more relevant expressions.