• Stars
    star
    2,548
  • Rank 17,837 (Top 0.4 %)
  • Language
    Haskell
  • License
    Other
  • Created over 10 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

What I Wish I Knew When Learning Haskell

MIT License Build Status

Read Online:

If you'd like a physical copy of the text you can either print it out for yourself (see Printable PDF) or purchase one from a publisher. The price is at-cost since the text is open source and free.

The current published version is:

Date: February 16, 2020
Git: d429c2e21b9636cffa27a8d4f063644b8bcecf1a

Contributing

If you want to submit a fix for a typo or fix edit the following Markdown file which generates all other targets.

tutorial.md

Then submit a Pull Request on Github describing your change.

Source code is directly included from the src directory into the resulting document by the preprocessor. To include a new sample edit the example source code directly. When adding a new Haskell file, add it to the ci script inside of the folder so it is run in the continuous integration script.

Source Code

Chapter Code Examples:

Compiling

If you'd like to build the documents locally you'll need to compile the preprocessor run either use Nix, Stack or Cabal to compile the preprocessor executable in the cabal file.

Stack:

$ stack install
$ stack exec make

Cabal:

$ cabal install
$ cabal exec make

For Nix:

$ make run-shell
$ ghc --make includes.hs
$ make

After this is built you can build anyone of the available target outputs.

LaTeX

You will need the whole XeTeX suite to compile.

$ apt-get install texlive texlive-xetex texlive-extra texlive-extra-utils
$ make pdf
$ make print

HTML

$ make html

Microsoft Word

$ make docx

Ebook

$ make epub

Continuous Integration

The book and example code is kept stable under continuous integration. The script src/ci will run through all example code and compile it against the example.cabal file of the given chapter. All bounds for dependencies are specified in the cabal file and ensure that the given code examples are up to date.

The CI is run in Github under TravisCI on every pull request.

To run the integration suite manually run:

$ cd src && ./ci

License

Copyright © 2009-2020 Stephen Diehl

This code included in the text is dedicated to the public domain. You can copy, modify, distribute and perform the code, even for commercial purposes, all without asking permission.

You may distribute this text in its full form freely, but may not reauthor or sublicense this work. Any reproductions of major portions of the text must include attribution.

The software is provided "as is", without warranty of any kind, express or implied, including But not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, Arising from, out of or in connection with the software or the use or other dealings in the software.

More Repositories

1

write-you-a-haskell

Building a modern functional compiler from first principles. (http://dev.stephendiehl.com/fun/)
Haskell
3,329
star
2

kaleidoscope

Haskell LLVM JIT Compiler Tutorial
Haskell
1,025
star
3

bulletproofs

Bulletproofs are short non-interactive zero-knowledge proofs that require no trusted setup
Haskell
533
star
4

numpile

A tiny 1000 line LLVM-based numeric specializer for scientific Python code.
Jupyter Notebook
404
star
5

gevent-tutorial

Gevent tutorial for the Working Python Developer
HTML
381
star
6

wasm

Haskell compiler infastructure for WebAssembly
WebAssembly
357
star
7

tinyjit

Haskell JIT
Haskell
181
star
8

minichat

Minimal realtime chat application ( Tutorial )
Python
132
star
9

kaylee

MapReduce with ZeroMQ
Python
121
star
10

repline

Haskeline wrapper for GHCi-like REPL interfaces
Haskell
107
star
11

papers

95
star
12

popping-the-crypto-bubble

A no holds barred and unrelenting hatchet job of the crypto community, with all its bad ideas and bad actors put into a historical context of market manias and financial populism.
TeX
91
star
13

dive-into-ghc

Dive into GHC
Haskell
82
star
14

arithmetic-circuits

Arithmetic circuits for zero knowledge proof systems
Haskell
81
star
15

zurihac-crypto

Small minimal examples of modern cryptographic techniques in Haskell
Haskell
79
star
16

cabal-edit

A utility for managing Hackage dependencies and manipulating Cabal files from the command line.
Haskell
74
star
17

schnorr-nizk

Schnorr Protocol for Non-interactive Zero-Knowledge Proofs
Haskell
73
star
18

haskell-vim-proto

Basic starter config for Vim and Haskell
Vim Script
64
star
19

double-ratchet

Double ratchet algorithm for E2E encryption
Haskell
59
star
20

pairing

Optimised bilinear pairings over elliptic curves
Haskell
55
star
21

zeromq-chat

A gevent + Django + Socket.IO + ZeroMQ chat example
Python
53
star
22

galois-field

Finite field and algebraic extension field arithmetic
Haskell
50
star
23

aos-signature

Abe-Ohkubo-Suzuki Linkable Ring Signatures
Haskell
48
star
24

pynanomsg

Python bindings for nanomsg
Python
47
star
25

sonic

Zero-Knowledge SNARKs from Linear-Size Universal and Updatable Structured Reference Strings
Haskell
44
star
26

subpy

Python subsets
Python
41
star
27

elliptic-curve

A polymorphic interface for elliptic curve operations
Haskell
40
star
28

vim-ormolu

Plugin for formatting Haskell source code
Vim Script
38
star
29

llvm-tutorial-standalone

DEPRECATED (Use: https://github.com/llvm-hs/llvm-hs-kaleidoscope )
Haskell
37
star
30

oblivious-transfer

Oblivious transfer for multiparty computation
Haskell
36
star
31

cats

Generate commutative diagrams inside of Pandoc with Tikz
TeX
35
star
32

hakyll-bootstrap

Basic Hakyll + Bootstrap site
HTML
28
star
33

paris-fp

Paris Functional Programming Meetup
Haskell
27
star
34

pyrewrite

Python term rewriting
Python
26
star
35

dotfiles

My config files
Vim Script
23
star
36

numpush

Shared Memory Numpy ( Deprecated, See https://github.com/ContinuumIO/blaze )
Python
22
star
37

llvm-codegen

Code generation utils for LLVM
Haskell
22
star
38

galois-fft

Finite field polynomial arithmetic based on fast Fourier transforms
Haskell
20
star
39

shamir

Shamir Secret Sharing
Haskell
19
star
40

datetime

Financial datetimes and holiday recurrence rules
Haskell
18
star
41

haskell-picosat

Haskell bindings for PicoSAT solver
C
16
star
42

haskell-warp-rest

A Haskell web application using acid-state and scotty
JavaScript
16
star
43

vim-cabalfmt

Cabal-fmt vim plugin for formatting Cabal package files
Vim Script
15
star
44

picologic

Symbolic logic expressions
Haskell
14
star
45

jquery-mathml

Superset of jQuery for working with MathML
JavaScript
12
star
46

cooking-generics

http://www.stephendiehl.com/posts/generics.html
Haskell
12
star
47

print

Simple printing with Text
Haskell
11
star
48

beamer_template

A toolchain to make beautiful Beamer presentations without fussing with LaTeX.
Python
11
star
49

haskell-linenoise

Lightweight readline library for Haskell
C
10
star
50

llvm-pp

A pretty printer for llvm-general-pure. (DEPRECATED: https://github.com/llvm-hs/llvm-hs-pretty/ )
Haskell
7
star
51

gevent_viz

Visualize gevent Greenlet context switches
Python
7
star
52

bnlc

Binary lambda calculus
Python
6
star
53

pycraig

Python library for scraping data from Craigslist
C
6
star
54

commentary

HTML
5
star
55

ts

C
5
star
56

validation

Applicative data validation
Haskell
5
star
57

cfrac

Continued fractions for arithmetic
Haskell
5
star
58

concurrent-timer

Concurrent timer
Haskell
4
star
59

websocket-logger

A in-browser logging console for debugging realtime communication
JavaScript
3
star
60

agents-experiment

Toy language
Haskell
3
star
61

unirewrite

Generic term rewriting
Haskell
3
star
62

tipy

Preprocessor for Python tutorials
Python
3
star
63

equation-editor

A lightweight extensible Javascript equation editor
JavaScript
3
star
64

pretty-latex

Utilities for pretty printing LaTeX from Haskell
Haskell
3
star
65

py-control-flow

Visualize python control flow
Python
3
star
66

pure-python

Cython interface for Pure
C
2
star
67

church-numbers

Lambda Calculus in Python
Python
2
star
68

vector-eigenvalues

C
2
star
69

pymathml

Fork of sourceforge.net/projects/pymathml
Python
1
star
70

rpygtk

A GTK based frontend for R
Python
1
star