Learn Haskell
Makefile
Switch branches/tags
Nothing to show
Latest commit f2f790a Nov 10, 2017 @bitemyapp bitemyapp Merge pull request #126 from ferhatelmas/haskell-c-typo
haskell-as-fast-as-c: typo fixes
Permalink
Failed to load latest commit information.
.gitignore Restructured the outline, added pdf using pandoc Feb 11, 2015
Contributing.md Add links to ru translation Jul 29, 2015
LICENSE Initial commit May 19, 2014
Makefile Merge pull request #57 from nadirs/make-other-langs Mar 17, 2015
README.md Merge pull request #113 from ffos/cs240h Oct 17, 2017
coc.md Update coc.md Jan 5, 2017
code_to_learn_from.md Slack bot example Dec 2, 2015
dialogues.md formatting Jan 11, 2015
guide-de.md Renamed NICTA to Data61. Updated links to their FP course. Mar 21, 2017
guide-el.md Greek Mar 13, 2015
guide-es.md Renamed NICTA to Data61. Updated links to their FP course. Mar 21, 2017
guide-fr.md Renamed NICTA to Data61. Updated links to their FP course. Mar 21, 2017
guide-id.md Add serbian link to other readme's Apr 6, 2017
guide-it.md Add serbian link to other readme's Apr 6, 2017
guide-ko.md Add serbian link to other readme's Apr 6, 2017
guide-pt.md Update "Como devo aprender Haskell?" block. Oct 17, 2017
guide-ro.md Renamed NICTA to Data61. Updated links to their FP course. Mar 21, 2017
guide-ru.md Fixed link in "Build from source" section Apr 20, 2017
guide-sr.md Translate README.md Apr 6, 2017
guide-tr.md turkish Mar 13, 2015
guide-ua.md Refresh Ukrainian translation a bit Oct 18, 2017
guide-zh_CN.md Fixed incorrect URLs Apr 19, 2017
guide-zh_tw.md Renamed NICTA to Data61. Updated links to their FP course. Mar 21, 2017
install.md haskellstack rel link fix Jan 31, 2016
libraries.md libraries Jun 7, 2015
rts.md Scheduler resources from @ReinH Feb 5, 2016
specific_topics-ua.md Renamed NICTA to Data61. Updated links to their FP course. Mar 21, 2017
specific_topics.md Renamed NICTA to Data61. Updated links to their FP course. Mar 21, 2017
tony_parametricity.pdf Large commit, lot of prettification, some small changes Feb 10, 2015
tools.md Update tools.md Feb 10, 2016
write_haskell_as_fast_as_c.md haskell-as-c: typo fixes Nov 10, 2017

README.md

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 Freenode.

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 cis194 followed by the Data61 course. Both are linked below. Everything else can be considered optional and is mentioned so you know where to look.

Alternately...

@dmvianna wanted me to let you know that these are just the free recommended resources. If you're willing to check out a book, we heartily recommend our own Haskell Book! That book replaces all of the primary resources recommended here.

Yorgey's cis194 course

Do this first, this is the primary way we recommend being introduced 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 cis194 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 cis194.


Data61 course

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

Available on github here.

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


Supplementary course after cis194 and the Data61 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 cis194 and Data61 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.