Building a modern functional compiler from first principles.
Read Online:
This is a work in progress.
- Chapter 1: Introduction
 - Chapter 2: Haskell Basics
 - Chapter 3: Parsing
 - Chapter 4: Lambda Calculus
 - Chapter 5: Type Systems
 - Chapter 6: Evaluation
 - Chapter 7: Hindley-Milner Inference
 - Chapter 8: Design of ProtoHaskell
 - Chapter 9: Extended Parser
 - Chapter 10: Custom Datatypes
 - [Chapter 11: Renamer] (http://dev.stephendiehl.com/fun/010_renamer.html)
 - Chapter 12: Pattern Matching & Desugaring
 - Chapter 13: System-F
 - Chapter 14: Type Classes
 - Chapter 15: Core Language
 - Chapter 16: Kinds
 - Chapter 17: Haskell Type Checker
 - Chapter 18: Core Interpreter
 - Chapter 19: Prelude
 - Chapter 20: Design of Lazy Evaluation
 - Chapter 21: STG
 - Chapter 22: Compilation
 - Chapter 23: Design of the Runtime
 - Chapter 24: Imp
 - Chapter 25: Code Generation ( C )
 - Chapter 26: Code Generation ( LLVM )
 - Chapter 27: Row Polymorphism & Effect Typing
 - Chapter 28: Future Work
 
To generate the build scripts provision a cabal sandbox with pandoc in it. This
is done by the write-you-a-haskell.cabal and  stack.yaml files.
Stack
$ stack exec makeTo generate the pdf, the LaTeX packages must be installed on the system.
$ sudo apt-get install texlive-xetex texlive-latex-extra
$ sudo apt-get install xzdec
$ sudo tlmgr install zapfding
$ stack exec make pdfGeneration of the epub is also supported.
$ stack exec make epubCabal
$ cabal sandbox init
$ cabal install --only-dependencies
$ cabal exec bash
$ makeAny and all contributions are always welcome. As always, I rely on the perpetual kindness and goodwill of Haskellers (like you!) to help correct grammar, clarify, and fix errors.
This written work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. You may reproduce and edit this work with attribution for all non-commercial purposes.
The included source is released under the terms of the MIT License.
  