Building a modern functional compiler from first principles. (http://dev.stephendiehl.com/fun/)
Go to file
2015-02-20 01:04:50 +01:00
chapter1 initial commit 2015-01-05 02:54:15 -05:00
chapter2 initial commit 2015-01-05 02:54:15 -05:00
chapter3 chapter3/calc/Eval.hs: avoid recomputation of normal form in eval 2015-01-30 20:23:57 +01:00
chapter4 source code block for locally named lambdas 2015-01-06 18:27:45 -05:00
chapter5 chapter5/stlc/Check.hs: make case expression in check function more idiomatic 2015-02-13 17:02:53 +01:00
chapter6 changes to the Evaluation chapter 2015-02-14 16:11:43 +01:00
chapter7 add test output 2015-01-28 09:51:29 -05:00
chapter8 initial commit 2015-01-05 02:54:15 -05:00
chapter9 attoparsec and operators 2015-01-19 10:45:58 -05:00
chapter10 Squashed commit of the following: 2015-01-18 21:04:01 -05:00
chapter11 Squashed commit of the following: 2015-01-18 21:04:01 -05:00
chapter12 Squashed commit of the following: 2015-01-18 21:04:01 -05:00
chapter27 Squashed commit of the following: 2015-01-18 21:04:01 -05:00
css fix css bugs 2015-01-19 11:09:46 -05:00
img Squashed commit of the following: 2015-01-18 21:04:01 -05:00
js restore nav.js, make js directory 2015-01-06 18:12:50 -05:00
misc update rss 2015-01-24 14:39:48 -05:00
.gitignore initial commit 2015-01-05 02:54:15 -05:00
.travis.yml texlive extras to travis 2015-01-08 01:46:42 -05:00
000_introduction.md finish sentence 2015-02-01 09:09:56 -05:00
001_basics.md Changes to the Monoids section of the Basics chapter 2015-02-13 22:28:27 +01:00
002_parsers.md small fix to Parsing chapter 2015-02-13 22:31:42 +01:00
003_lambda_calculus.md Modify "lambda" Greek character for PDF 2015-02-10 23:47:43 +09:00
004_type_systems.md Changes to Notation Reference section 2015-02-13 17:21:17 +01:00
005_evaluation.md changes to the Evaluation chapter 2015-02-14 16:11:43 +01:00
006_hindley_milner.md changes to the type inference examples 2015-02-20 01:04:50 +01:00
007_path.md Squashed commit of the following: 2015-01-18 21:04:01 -05:00
008_extended_parser.md fix missing fence 2015-01-28 19:30:08 -05:00
009_datatypes.md Squashed commit of the following: 2015-01-18 21:04:01 -05:00
010_renamer.md Squashed commit of the following: 2015-01-18 21:04:01 -05:00
011_pattern_matching.md Squashed commit of the following: 2015-01-18 21:04:01 -05:00
012_systemf.md added failure cases for poly 2015-01-28 09:31:19 -05:00
026_llvm.md Squashed commit of the following: 2015-01-18 21:04:01 -05:00
atom.xml update rss 2015-01-24 14:39:48 -05:00
contributing.md Squashed commit of the following: 2015-01-18 21:04:01 -05:00
CONTRIBUTORS.md added christian 2015-01-18 21:17:22 -05:00
includes.hs experiment with epub generation 2015-01-08 20:36:34 -05:00
index.md small fixes in the first four chapters 2015-01-27 13:57:22 +01:00
latex_macros cleanup pdf warts 2015-01-11 13:52:00 -05:00
LICENSE initial commit 2015-01-05 02:54:15 -05:00
Makefile custom command for building index 2015-01-19 11:31:36 -05:00
README.md bump git hash for release 2015-01-19 11:04:03 -05:00
run-tests.sh don't build pdf on travis 2015-01-18 21:35:35 -05:00
template.html page.tmpl -> template.html 2015-01-09 09:04:56 -05:00
template.latex bump git hash for release 2015-01-19 11:04:03 -05:00
title.md Squashed commit of the following: 2015-01-18 21:04:01 -05:00


Building a modern functional compiler from first principles.

Stephen Diehl

Build Status Gitter MIT License

Read Online:

Releases

December

January

February

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.

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.