my notes for the book Essentials of Programming Languages including some exercises and codes
and some topics are from the book PLAI by sk / Matt Might's blog
codes written in PLT Scheme
- chapter-3 -> scoping
- chapter-4 -> references, evaluation strategies(call by ?)
- chapter-5 -> CPS interpreter, as IR opposed to SSA, advanced control-flow, trampoline(make stack usage into heap usage)
- chapter-6 -> CPS translator, make any code into CPS, expose side-effect
- chapter-7 -> Hindley-Milner
- chapter-8 -> Module, struct
- chapter-9 -> interfaces & classes, subtype polymorphism
- first class function/continuation/macro
- CPS for advanced control(exception, threading, return) and SAT solver embedding
- Type inference -> equation solving
- different evaluation strategies(need, name, value, ref)
- struct/module
- OOP(subtyping polymorphism implementation, type checker, method with super and self)
- garbage collection -> sound and complete -> mark-sweep
- macro -> innate support for desugaring -> define-syntax -> hygienic macro(no pollution of namespace, lexical scope)
- rich type system(dependent, kinds, typeclasses)
- reflection -> inspect and modify its own structure at runtime(like python's getattr())
- contract -> assertions, dynamic verification
- implicit(backup for type inference)
- embedded program synthesis and static analysis