{"id":13617164,"url":"https://github.com/sdiehl/write-you-a-haskell","last_synced_at":"2025-05-15T02:09:22.117Z","repository":{"id":25385797,"uuid":"28814210","full_name":"sdiehl/write-you-a-haskell","owner":"sdiehl","description":"Building a modern functional compiler from first principles. (http://dev.stephendiehl.com/fun/)","archived":false,"fork":false,"pushed_at":"2021-01-11T13:56:03.000Z","size":961,"stargazers_count":3375,"open_issues_count":30,"forks_count":256,"subscribers_count":190,"default_branch":"master","last_synced_at":"2025-04-14T00:58:26.227Z","etag":null,"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"],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sdiehl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-01-05T13:44:54.000Z","updated_at":"2025-04-08T10:43:35.000Z","dependencies_parsed_at":"2022-07-14T08:30:59.485Z","dependency_job_id":null,"html_url":"https://github.com/sdiehl/write-you-a-haskell","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdiehl%2Fwrite-you-a-haskell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdiehl%2Fwrite-you-a-haskell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdiehl%2Fwrite-you-a-haskell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdiehl%2Fwrite-you-a-haskell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sdiehl","download_url":"https://codeload.github.com/sdiehl/write-you-a-haskell/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254259384,"owners_count":22040820,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["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"],"created_at":"2024-08-01T20:01:37.628Z","updated_at":"2025-05-15T02:09:22.097Z","avatar_url":"https://github.com/sdiehl.png","language":"Haskell","funding_links":[],"categories":["Haskell","Resources"],"sub_categories":["[Elm](http://elm-lang.org)"],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"http://dev.stephendiehl.com/fun/\"\u003e\n    \u003cimg src=\"https://github.com/sdiehl/write-you-a-haskell/raw/master/img/Haskell-Logo.png\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"http://dev.stephendiehl.com/fun/\"\u003e\n    \u003cimg src=\"https://github.com/sdiehl/write-you-a-haskell/raw/master/img/cover.png\"/\u003e\n  \u003c/a\u003e\n  \u003cbr/\u003e\n  \u003cem\u003eBuilding a modern functional compiler from first principles.\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://twitter.com/smdiehl\"\u003eStephen Diehl\u003c/a\u003e\n\u003c/p\u003e\n\n[![Build Status](https://travis-ci.org/sdiehl/write-you-a-haskell.svg)](https://travis-ci.org/sdiehl/write-you-a-haskell)\n[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/sdiehl/write-you-a-haskell?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=body_badge)\n[![MIT License](http://img.shields.io/badge/license-mit-blue.svg)](https://github.com/sdiehl/write-you-a-haskell/blob/master/LICENSE)\n\nRead Online:\n\n* [**HTML**](http://dev.stephendiehl.com/fun/)\n* [**PDF**](http://dev.stephendiehl.com/fun/WYAH.pdf)\n\nReleases\n--------\n\nThis is a work in progress.\n\n* [Chapter 1: Introduction](http://dev.stephendiehl.com/fun/000_introduction.html)\n* [Chapter 2: Haskell Basics](http://dev.stephendiehl.com/fun/001_basics.html)\n* [Chapter 3: Parsing](http://dev.stephendiehl.com/fun/002_parsers.html)\n* [Chapter 4: Lambda Calculus](http://dev.stephendiehl.com/fun/003_lambda_calculus.html)\n* [Chapter 5: Type Systems](http://dev.stephendiehl.com/fun/004_type_systems.html)\n* [Chapter 6: Evaluation](http://dev.stephendiehl.com/fun/005_evaluation.html)\n* [Chapter 7: Hindley-Milner Inference](http://dev.stephendiehl.com/fun/006_hindley_milner.html)\n* [Chapter 8: Design of ProtoHaskell](http://dev.stephendiehl.com/fun/007_path.html)\n* [Chapter 9: Extended Parser](http://dev.stephendiehl.com/fun/008_extended_parser.html)\n* [Chapter 10: Custom Datatypes](http://dev.stephendiehl.com/fun/009_datatypes.html)\n* [Chapter 11: Renamer] (http://dev.stephendiehl.com/fun/010_renamer.html)\n* Chapter 12: Pattern Matching \u0026 Desugaring\n* Chapter 13: System-F\n* Chapter 14: Type Classes\n* Chapter 15: Core Language\n* Chapter 16: Kinds\n* Chapter 17: Haskell Type Checker\n* Chapter 18: Core Interpreter\n* Chapter 19: Prelude\n* Chapter 20: Design of Lazy Evaluation\n* Chapter 21: STG\n* Chapter 22: Compilation\n* Chapter 23: Design of the Runtime\n* Chapter 24: Imp\n* Chapter 25: Code Generation ( C )\n* Chapter 26: Code Generation ( LLVM )\n* Chapter 27: Row Polymorphism \u0026 Effect Typing\n* Chapter 28: Future Work\n\nBuilding\n--------\n\nTo generate the build scripts provision a cabal sandbox with pandoc in it. This\nis done by the ``write-you-a-haskell.cabal`` and  ``stack.yaml`` files.\n\n**Stack**\n\n```bash\n$ stack exec make\n```\n\nTo generate the pdf, the LaTeX packages must be installed on the\nsystem.\n\n```bash\n$ sudo apt-get install texlive-xetex texlive-latex-extra\n$ sudo apt-get install xzdec\n$ sudo tlmgr install zapfding\n$ stack exec make pdf\n```\n\nGeneration of the epub is also supported.\n\n```bash\n$ stack exec make epub\n```\n\n\n**Cabal**\n\n```bash\n$ cabal sandbox init\n$ cabal install --only-dependencies\n$ cabal exec bash\n$ make\n```\n\nContributing\n------------\n\nAny and all contributions are always welcome.  As always, I rely on the\nperpetual kindness and goodwill of Haskellers (like you!) to help correct\ngrammar, clarify, and fix errors.\n\n* [Contributing](http://dev.stephendiehl.com/fun/contributing.html)\n\nLicense\n-------\n\n\u003cimg src=\"http://mirrors.creativecommons.org/presskit/buttons/88x31/png/by-nc-sa.png\" width=\"140\" alt=\"Artwork CC BY NC SA\" /\u003e\n\nThis written work is licensed under a \u003ca rel=\"license\"\nhref=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\"\u003eCreative Commons\nAttribution-NonCommercial-ShareAlike 4.0 International License\u003c/a\u003e. You may\nreproduce and edit this work with attribution for all non-commercial purposes.\n\nThe included source is released under the terms of the [MIT License](http://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsdiehl%2Fwrite-you-a-haskell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsdiehl%2Fwrite-you-a-haskell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsdiehl%2Fwrite-you-a-haskell/lists"}