Searching protocol for "lambda calculus"
Build and understand lambda calculus interpreters.
Master type systems with STLC.
Master programming language theory and compilers.
Master polymorphic lambda calculus.
Transform closures to explicit environments.
Define program evaluation via rewrite rules.
Infer types for functional languages.
Master type checking with bidirectional algorithms.
Define and execute abstract machines.
Generate type checkers from specs.
Formalize language semantics.