Skip to content
vic

sdiehl/write-you-a-haskell

Building a modern functional compiler from first principles. (http://dev.stephendiehl.com/fun/)

sdiehl/write-you-a-haskell.json
{
"createdAt": "2015-01-05T13:44:54Z",
"defaultBranch": "master",
"description": "Building a modern functional compiler from first principles. (http://dev.stephendiehl.com/fun/)",
"fullName": "sdiehl/write-you-a-haskell",
"homepage": null,
"language": "Haskell",
"name": "write-you-a-haskell",
"pushedAt": "2021-01-11T13:56:03Z",
"stargazersCount": 3472,
"topics": [
"book",
"compiler",
"evaluation",
"functional-language",
"functional-programming",
"haskel",
"hindley-milner",
"intermediate-representation",
"lambda-calculus",
"pdf-book",
"type",
"type-checking",
"type-inference",
"type-system",
"type-theory"
],
"updatedAt": "2025-11-26T13:19:33Z",
"url": "https://github.com/sdiehl/write-you-a-haskell"
}


Building a modern functional compiler from first principles.

Stephen Diehl

Build Status Gitter MIT License

Read Online:

This is a work in progress.

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

Terminal window
$ stack exec make

To generate the pdf, the LaTeX packages must be installed on the system.

Terminal window
$ sudo apt-get install texlive-xetex texlive-latex-extra
$ sudo apt-get install xzdec
$ sudo tlmgr install zapfding
$ stack exec make pdf

Generation of the epub is also supported.

Terminal window
$ stack exec make epub

Cabal

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

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.

Artwork CC BY NC SA

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.