These courses follow An Incremental Approach to Compiler Construction / Ghuloum while building a compiler from a functional language to x86 assembly + a C wrapper in OCaml.
- http://www.ccs.neu.edu/course/cs4410/
- https://ucsd-cse131-f19.github.io/ (See the podcasts section)
- Essential of Compilation - same idea but with Racket and as a book
And another course covering the intermediate stage of compiling function languages called 'Compiling Functional Languages':
- Simon Peyton Jones - how GHC type inference engine actually works
- Type Inference (PAPL)
- The Essence of ML Type Inference
- Correcting A Widespread Error in Unification Algorithms
- Generalizing Hindley-Milner Type Inference Algorithms
- Typing Haskell in Haskell
- Giml's type inference engine
- Grammars - The Language of Languages
- Type Classes - Parsing (Haskell)
- Intro to Parsing with Parsec in Haskell
- CHICKEN data representation
- Automated Memory Management (Overview)
- Baby's First Garbage Collector
- CHICKEN Scheme's garbage collector
- CEK Machines
- CESK Machines
- The ZINC Experiment
- Implementing lazy functional languages on stock hardware: The Spineless Tagless G-Machine
- Compiler Design: Virtual Machine