Learn Haskell
Go to file
Abdullah 76018bdb3e
Sync translation guide links in translations (#161)
* All translation references added to all other translation documents which have "non-speakers" section

* Remove link to English in README.md
2023-03-06 13:28:18 -06:00
.gitignore Restructured the outline, added pdf using pandoc 2015-02-12 02:20:17 +05:30
coc.md Update coc.md 2017-01-05 22:37:30 +02:00
code_to_learn_from.md Links: use https for some urls 2021-09-29 13:14:09 +08:00
Contributing.md Add links to ru translation 2015-07-29 21:34:18 +08:00
dialogues.md Links: use https for some urls 2021-09-29 13:14:09 +08:00
guide-de.md Update course numbering, s/cis194/cis1940/g (#159) 2022-06-30 11:44:44 -05:00
guide-el.md Greek 2015-03-13 04:20:35 -05:00
guide-es.md Update course numbering, s/cis194/cis1940/g (#159) 2022-06-30 11:44:44 -05:00
guide-fr.md Update course numbering, s/cis194/cis1940/g (#159) 2022-06-30 11:44:44 -05:00
guide-hr.md Sync translation guide links in translations (#161) 2023-03-06 13:28:18 -06:00
guide-id.md Sync translation guide links in translations (#161) 2023-03-06 13:28:18 -06:00
guide-it.md Sync translation guide links in translations (#161) 2023-03-06 13:28:18 -06:00
guide-ja.md docs: add translation for Japanese (#160) 2022-12-12 13:50:00 -06:00
guide-ko.md Sync translation guide links in translations (#161) 2023-03-06 13:28:18 -06:00
guide-pt.md Update course numbering, s/cis194/cis1940/g (#159) 2022-06-30 11:44:44 -05:00
guide-ro.md Update course numbering, s/cis194/cis1940/g (#159) 2022-06-30 11:44:44 -05:00
guide-ru.md Sync translation guide links in translations (#161) 2023-03-06 13:28:18 -06:00
guide-sr.md Sync translation guide links in translations (#161) 2023-03-06 13:28:18 -06:00
guide-tl.md Sync translation guide links in translations (#161) 2023-03-06 13:28:18 -06:00
guide-tr.md Sync translation guide links in translations (#161) 2023-03-06 13:28:18 -06:00
guide-ua.md Sync translation guide links in translations (#161) 2023-03-06 13:28:18 -06:00
guide-zh_CN.md Update course numbering, s/cis194/cis1940/g (#159) 2022-06-30 11:44:44 -05:00
guide-zh_tw.md Update course numbering, s/cis194/cis1940/g (#159) 2022-06-30 11:44:44 -05:00
install.md linux distribution install guide correction (#148) 2022-01-25 11:35:54 -06:00
libraries.md libraries 2015-06-07 12:40:30 -05:00
LICENSE Initial commit 2014-05-19 12:43:26 -07:00
Makefile Merge pull request #57 from nadirs/make-other-langs 2015-03-16 19:30:13 -05:00
README.md Sync translation guide links in translations (#161) 2023-03-06 13:28:18 -06:00
rts.md Scheduler resources from @ReinH 2016-02-05 12:06:20 -06:00
specific_topics-ua.md Links: use https for some urls 2021-09-29 13:14:09 +08:00
specific_topics.md Links: use https for some urls 2021-09-29 13:14:09 +08:00
tony_parametricity.pdf Large commit, lot of prettification, some small changes 2015-02-10 16:19:09 +05:30
tools.md Update tools.md 2016-02-10 13:37:43 -06:00
write_haskell_as_fast_as_c.md haskell-as-c: typo fixes 2017-11-10 21:31:51 +01:00

How to learn Haskell

This is a recommended path for learning Haskell based on experience helping others. A list of recommendations from one of the authors of the Haskell Book.

For non-English speakers

Don't sweat the stuff you don't understand immediately. Keep moving!

Community

Our IRC channel is #haskell-beginners on Libera Chat.

IRC web client here.

The haskell mailing lists.

Community Guidelines

See the community guidelines to understand the conduct that is expected in the IRC channel. You'll get a warning if you're not obviously trolling, but be aware the channel is exclusively for those learning or teaching Haskell.

Installing Haskell

Use Stack to get going with Haskell

Get Stack to get GHC installed and to build your projects.

If you don't know anything about Stack and would like an overview, check out this comprehensive Stack video tutorial.

Also, DO NOT INSTALL HASKELL PLATFORM

Instead of following the instructions on Haskell.org, get Stack.

Why not platform?

https://mail.haskell.org/pipermail/haskell-community/2015-September/000014.html

How should I learn Haskell?

The core recommendation is to read the lectures and complete all exercises/homework for the Spring 13 version of cis1940 followed by the FP course. Both are linked below. Everything else can be considered optional and is mentioned so you know where to look.

Haskell Programming from First Principles.

@dmvianna wanted me to let you know that the below are just the free recommended resources. If you're willing to check out a book, we heartily recommend our own Haskell Book! If you can't afford the book for any reasons, please email us using the contact information at our support page.

Yorgey's cis1940 course

Do this first if aren't getting the Haskell Book, this is the best free introduction to Haskell.

Available online.

Brent Yorgey's course is the best I've found so far. This course is valuable as it will not only equip you to write basic Haskell but also help you to understand parser combinators.

The only reason you shouldn't start with cis1940 is if you are not a programmer or are an inexperienced one. If that's the case, start with Thompson's book and transition to cis1940.


Functional Programming course

This is the course we recommend doing after Yorgey's cis1940 course

Available on github here.

This will reinforce and give you experience directly implementing the abstractions introduced in cis1940, this is practice which is critical to becoming comfortable with everyday uses of Functor/Applicative/Monad/etc. in Haskell. Doing cis1940 and then the FP course represents the core recommendation of my guide and is how we teach everyone Haskell.


Supplementary course after cis1940 and the FP course

Provides more material on intermediate topics

cs240h is available online:

This is Bryan O'Sullivan's online course from the class he teaches at Stanford. If you don't know who he is, take a gander at half the libraries any Haskell application ends up needing and his name is on it. Of particular note if you've already done the Yorgey course are the modules on phantom types, information flow control, language extensions, concurrency, pipes, and lenses.


Resources for specific topics in Haskell

These resources are not vetted or tested with learners as cis1940 and FP course have been, but they're linked in the topic listing so you have ideas on where to begin. This includes things like intermediate/advanced concepts and subjects like tooling and text editors.

Dialogues

Hosted in this repository here.

These are actually pretty important and helpful. Look here for deep dives on a variety of topics.