Building a modern functional compiler from first principles. (http://dev.stephendiehl.com/fun/)
Go to file
2016-01-10 21:47:58 -05:00
chapter1 initial commit 2015-01-05 02:54:15 -05:00
chapter2 initial commit 2015-01-05 02:54:15 -05:00
chapter3 "Infix" --> "Prefix" in comment 2015-06-10 13:23:49 -04:00
chapter4 bump lambda calculus examples 2015-12-10 10:55:42 -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 spelling 2015-12-22 13:27:34 -05:00
chapter8 initial commit 2015-01-05 02:54:15 -05:00
chapter9 added example generics cases 2015-12-13 17:44:06 -05:00
chapter10 added example generics cases 2015-12-13 17:44:06 -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 rewwork table layouts 2015-12-31 02:28:43 -05:00
img added jit compiler images 2016-01-10 21:47:58 -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 added stack support 2015-11-26 19:16:46 -05:00
.travis.yml punt on 7.10 for now 2015-12-11 14:30:18 -05:00
000_introduction.md rework tables in introduction 2015-12-31 02:38:45 -05:00
001_basics.md refine happy parser example 2015-12-13 13:58:00 -05:00
002_parsers.md rewwork table layouts 2015-12-31 02:28:43 -05:00
003_lambda_calculus.md crosslink chapter10 2015-12-13 18:19:34 -05:00
004_type_systems.md Added missing TArr to the type definition 2015-08-09 18:24:01 +02: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 rewwork table layouts 2015-12-31 02:28:43 -05:00
008_extended_parser.md except handling for alex lexer 2015-12-13 17:30:02 -05:00
009_datatypes.md case expansion algorithm 2016-01-10 21:25:18 -05:00
010_renamer.md enable build for chapter 11 2015-12-31 01:29:11 -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 added jit compiler images 2016-01-10 21:47:58 -05:00
atom.xml update rss 2015-01-24 14:39:48 -05:00
contributing.md bump license 2015-12-31 01:51:14 -05:00
CONTRIBUTORS.md Added Jake Taylor to contributors list 2015-05-16 23:12:01 -07:00
deploy.sh change prompt characters 2015-12-31 02:00:04 -05:00
includes.hs experiment with epub generation 2015-01-08 20:36:34 -05:00
index.md add datatypes to index 2015-12-31 01:36:05 -05:00
latex_macros cleanup pdf warts 2015-01-11 13:52:00 -05:00
LICENSE bump license 2015-12-31 01:51:14 -05:00
Makefile enable build for chapter 11 2015-12-31 01:29:11 -05:00
README.md enable build for chapter 11 2015-12-31 01:29:11 -05:00
run-tests.sh don't build pdf on travis 2015-01-18 21:35:35 -05:00
stack.yaml added stack support 2015-11-26 19:16:46 -05:00
template.html page.tmpl -> template.html 2015-01-09 09:04:56 -05:00
template.latex refine happy parser example 2015-12-13 13:58:00 -05:00
title.md Squashed commit of the following: 2015-01-18 21:04:01 -05:00
write-you-a-haskell.cabal relax upper bound 2015-12-11 12:13:00 -05:00


Building a modern functional compiler from first principles.

Stephen Diehl

Build Status Gitter MIT License

Read Online:

Releases

This is a work in progress.

Building

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 make

To make the 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 pdf

Cabal

$ cabal sandbox init
$ cabal install --only-dependencies
$ cabal exec bash
$ make

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.