Building a modern functional compiler from first principles.

Stephen Diehl

[![Build Status](https://travis-ci.org/sdiehl/write-you-a-haskell.svg)](https://travis-ci.org/sdiehl/write-you-a-haskell) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/sdiehl/write-you-a-haskell?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge) [![MIT License](http://img.shields.io/badge/license-mit-blue.svg)](https://github.com/sdiehl/write-you-a-haskell/blob/master/LICENSE) Read Online: * [**HTML**](http://dev.stephendiehl.com/fun/) * [**PDF**](http://dev.stephendiehl.com/fun/WYAH.pdf) Releases -------- **December** * [Chapter 1: Introduction](http://dev.stephendiehl.com/fun/000_introduction.html) * [Chapter 2: Haskell Basics](http://dev.stephendiehl.com/fun/001_basics.html) * [Chapter 3: Parsing](http://dev.stephendiehl.com/fun/002_parsers.html) * [Chapter 4: Lambda Calculus](http://dev.stephendiehl.com/fun/003_lambda_calculus.html) **January** * [Chapter 5: Type Systems](http://dev.stephendiehl.com/fun/004_type_systems.html) * [Chapter 6: Evaluation](http://dev.stephendiehl.com/fun/005_evaluation.html) * [Chapter 7: Hindley-Milner Inference](http://dev.stephendiehl.com/fun/006_hindley_milner.html) * [Chapter 8: Design of ProtoHaskell](http://dev.stephendiehl.com/fun/007_path.html) **February** * Chapter 9: Extended Parser * Chapter 10: Custom Datatypes * Chapter 11: Renamer * Chapter 12: Pattern Matching & Desugaring **March** * Chapter 13: System-F * Chapter 14: Type Classes * Chapter 15: Core Language **April** * Chapter 16: Kinds * Chapter 17: Haskell Type Checker * Chapter 18: Core Interpreter * Chapter 19: Prelude **May** * Chapter 20: Design of Lazy Evaluation * Chapter 21: STG **June** * Chapter 22: Compilation * Chapter 23: Design of the Runtime **July** * Chapter 24: Imp * Chapter 25: Code Generation ( C ) * Chapter 26: Code Generation ( LLVM ) **August** * Chapter 27: Row Polymorphism & Effect Typing * Chapter 28: Future Work Contributing ------------ Any 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. * [Contributing](http://dev.stephendiehl.com/fun/contributing.html) License ------- 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](http://opensource.org/licenses/MIT).