{"id":13472455,"url":"https://github.com/sdiehl/wiwinwlh","last_synced_at":"2025-05-15T03:08:26.554Z","repository":{"id":15542512,"uuid":"18277389","full_name":"sdiehl/wiwinwlh","owner":"sdiehl","description":"What I Wish I Knew When Learning Haskell","archived":false,"fork":false,"pushed_at":"2022-02-25T06:38:14.000Z","size":10083,"stargazers_count":2580,"open_issues_count":8,"forks_count":241,"subscribers_count":93,"default_branch":"master","last_synced_at":"2025-04-14T03:11:23.567Z","etag":null,"topics":["article-series","examples","functional-programming","functional-programming-examples","haskell"],"latest_commit_sha":null,"homepage":"http://dev.stephendiehl.com/hask/","language":"Haskell","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sdiehl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-03-31T00:33:36.000Z","updated_at":"2025-04-11T03:26:44.000Z","dependencies_parsed_at":"2022-07-15T21:16:58.034Z","dependency_job_id":null,"html_url":"https://github.com/sdiehl/wiwinwlh","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%2Fwiwinwlh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdiehl%2Fwiwinwlh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdiehl%2Fwiwinwlh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdiehl%2Fwiwinwlh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sdiehl","download_url":"https://codeload.github.com/sdiehl/wiwinwlh/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254264771,"owners_count":22041794,"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":["article-series","examples","functional-programming","functional-programming-examples","haskell"],"created_at":"2024-07-31T16:00:54.784Z","updated_at":"2025-05-15T03:08:21.541Z","avatar_url":"https://github.com/sdiehl.png","language":"Haskell","funding_links":[],"categories":["Haskell","haskell"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"http://dev.stephendiehl.com/hask/\"\u003e\n    \u003cimg src=\"http://dev.stephendiehl.com/hask/img/title.png\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n[![MIT License](http://img.shields.io/badge/license-mit-blue.svg)](https://github.com/sdiehl/wiwinwlh/blob/master/LICENSE)\n[![Build Status](https://travis-ci.org/sdiehl/wiwinwlh.svg?branch=master)](https://travis-ci.org/sdiehl/wiwinwlh)\n\nRead Online:\n\n* [**HTML**](http://dev.stephendiehl.com/hask/)\n* [**Screen PDF**](http://dev.stephendiehl.com/hask/tutorial.pdf)\n* [**Printable PDF**](http://dev.stephendiehl.com/hask/tutorial_print.pdf)\n* [**EPUB**](http://dev.stephendiehl.com/hask/tutorial.epub)\n* [**Kindle MOBI**](http://dev.stephendiehl.com/hask/tutorial.mobi)\n* [**Example Code**](https://github.com/sdiehl/wiwinwlh/tree/master/src)\n\nIf you'd like a physical copy of the text you can either print it out for\nyourself (see Printable PDF) or purchase one from a publisher. The price is\nat-cost since the text is open source and free.\n\n* [**Blurb Publisher**](https://www.blurb.co.uk/b/9958091-what-i-wish-i-knew-when-learning-haskell)\n\nThe current published version is:\n\n```\nDate: February 16, 2020\nGit: d429c2e21b9636cffa27a8d4f063644b8bcecf1a\n```\n\nContributing\n------------\n\nIf you want to submit a fix for a typo or fix edit the following Markdown file\nwhich generates all other targets.\n\n[tutorial.md](./tutorial.md)\n\nThen submit a Pull Request on Github describing your change.\n\nSource code is directly included from the `src` directory into the resulting\ndocument by the preprocessor. To include a new sample edit the example source\ncode directly. When adding a new Haskell file, add it to the `ci` script inside\nof the folder so it is run in the continuous integration script.\n\nSource Code\n-----------\n\nChapter Code Examples:\n\n* [01-basics/            ](https://github.com/sdiehl/wiwinwlh/tree/master/src/01-basics/)\n* [02-monads/            ](https://github.com/sdiehl/wiwinwlh/tree/master/src/02-monads/)\n* [03-monad-transformers/](https://github.com/sdiehl/wiwinwlh/tree/master/src/03-monad-transformers/)\n* [04-extensions/        ](https://github.com/sdiehl/wiwinwlh/tree/master/src/04-extensions/)\n* [05-laziness/          ](https://github.com/sdiehl/wiwinwlh/tree/master/src/05-laziness/)\n* [06-prelude/           ](https://github.com/sdiehl/wiwinwlh/tree/master/src/06-prelude/)\n* [07-text-bytestring/   ](https://github.com/sdiehl/wiwinwlh/tree/master/src/07-text-bytestring/)\n* [08-applicatives/      ](https://github.com/sdiehl/wiwinwlh/tree/master/src/08-applicatives/)\n* [09-errors/            ](https://github.com/sdiehl/wiwinwlh/tree/master/src/09-errors/)\n* [10-advanced-monads/   ](https://github.com/sdiehl/wiwinwlh/tree/master/src/10-advanced-monads/)\n* [11-quantification/    ](https://github.com/sdiehl/wiwinwlh/tree/master/src/11-quantification/)\n* [12-gadts/             ](https://github.com/sdiehl/wiwinwlh/tree/master/src/12-gadts/)\n* [13-lambda-calculus/   ](https://github.com/sdiehl/wiwinwlh/tree/master/src/13-lambda-calculus/)\n* [14-interpreters/      ](https://github.com/sdiehl/wiwinwlh/tree/master/src/14-interpreters/)\n* [15-testing/           ](https://github.com/sdiehl/wiwinwlh/tree/master/src/15-testing/)\n* [16-type-families/     ](https://github.com/sdiehl/wiwinwlh/tree/master/src/16-type-families/)\n* [17-promotion/         ](https://github.com/sdiehl/wiwinwlh/tree/master/src/17-promotion/)\n* [18-generics/          ](https://github.com/sdiehl/wiwinwlh/tree/master/src/18-generics/)\n* [19-numbers/           ](https://github.com/sdiehl/wiwinwlh/tree/master/src/19-numbers/)\n* [20-data-structures/   ](https://github.com/sdiehl/wiwinwlh/tree/master/src/20-data-structures/)\n* [21-ffi/               ](https://github.com/sdiehl/wiwinwlh/tree/master/src/21-ffi/)\n* [22-concurrency/       ](https://github.com/sdiehl/wiwinwlh/tree/master/src/22-concurrency/)\n* [23-graphics/          ](https://github.com/sdiehl/wiwinwlh/tree/master/src/23-graphics/)\n* [24-parsing/           ](https://github.com/sdiehl/wiwinwlh/tree/master/src/24-parsing/)\n* [25-streaming/         ](https://github.com/sdiehl/wiwinwlh/tree/master/src/25-streaming/)\n* [26-data-formats/      ](https://github.com/sdiehl/wiwinwlh/tree/master/src/26-data-formats/)\n* [27-web/               ](https://github.com/sdiehl/wiwinwlh/tree/master/src/27-web/)\n* [28-databases/         ](https://github.com/sdiehl/wiwinwlh/tree/master/src/28-databases/)\n* [29-ghc/               ](https://github.com/sdiehl/wiwinwlh/tree/master/src/29-ghc/)\n* [30-languages/         ](https://github.com/sdiehl/wiwinwlh/tree/master/src/30-languages/)\n* [31-template-haskell/  ](https://github.com/sdiehl/wiwinwlh/tree/master/src/31-template-haskell/)\n* [32-cryptography       ](https://github.com/sdiehl/wiwinwlh/tree/master/src/32-cryptography/)\n* [33-categories/        ](https://github.com/sdiehl/wiwinwlh/tree/master/src/33-categories/)\n* [34-time/              ](https://github.com/sdiehl/wiwinwlh/tree/master/src/34-time/)\n\nCompiling\n---------\n\nIf you'd like to build the documents locally you'll need to compile the\npreprocessor run either use Nix, Stack or Cabal to compile the preprocessor\nexecutable in the cabal file.\n\nStack:\n\n```bash\n$ stack install\n$ stack exec make\n```\n\nCabal:\n\n```bash\n$ cabal install\n$ cabal exec make\n```\n\nFor Nix:\n\n```bash\n$ make run-shell\n$ ghc --make includes.hs\n$ make\n```\n\nAfter this is built you can build anyone of the available target outputs.\n\n**LaTeX**\n\nYou will need the whole XeTeX suite to compile.\n\n```bash\n$ apt-get install texlive texlive-xetex texlive-extra texlive-extra-utils\n$ make pdf\n$ make print\n```\n\n**HTML**\n\n```bash\n$ make html\n```\n\n**Microsoft Word**\n\n```bash\n$ make docx\n```\n\n**Ebook**\n\n```bash\n$ make epub\n```\n\nContinuous Integration\n----------------------\n\nThe book and example code is kept stable under continuous integration. The\nscript `src/ci` will run through all example code and compile it against the\n`example.cabal` file of the given chapter. All bounds for dependencies are\nspecified in the cabal file and ensure that the given code examples are up to\ndate.\n\nThe CI is run in Github under TravisCI on every pull request.\n\nTo run the integration suite manually run:\n\n```bash\n$ cd src \u0026\u0026 ./ci\n```\n\nLicense\n-------\n\nCopyright © 2009-2020 Stephen Diehl\n\nThis code included in the text is dedicated to the public domain. You can copy,\nmodify, distribute and perform the code, even for commercial purposes, all\nwithout asking permission.\n\nYou may distribute this text in its full form freely, but may not reauthor or\nsublicense this work. Any reproductions of major portions of the text must\ninclude attribution.\n\nThe software is provided \"as is\", without warranty of any kind, express or\nimplied, including But not limited to the warranties of merchantability, fitness\nfor a particular purpose and noninfringement. In no event shall the authors or\ncopyright holders be liable for any claim, damages or other liability, whether\nin an action of contract, tort or otherwise, Arising from, out of or in\nconnection with the software or the use or other dealings in the software.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsdiehl%2Fwiwinwlh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsdiehl%2Fwiwinwlh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsdiehl%2Fwiwinwlh/lists"}