2015-05-02 20:05:35 +00:00
# How to learn Haskell
2015-02-11 20:50:17 +00:00
2015-05-02 20:06:22 +00:00
This is a recommended path for learning Haskell based on experience helping others.
2014-05-19 19:43:26 +00:00
2015-03-13 09:18:34 +00:00
2015-03-13 09:11:37 +00:00
## For non-English speakers
2015-03-13 09:16:56 +00:00
* [Auf Deutsch ](guide-de.md )
2015-05-18 18:50:41 +00:00
<!-- * [Στην ελληνική ](guide-el.md ) -->
2015-03-13 09:20:35 +00:00
2015-03-13 11:28:45 +00:00
* [En Español ](guide-es.md )
2015-03-13 09:16:56 +00:00
* [En Français ](guide-fr.md )
2015-03-13 09:11:37 +00:00
2015-03-13 09:18:34 +00:00
* [In Italiano ](guide-it.md )
2015-03-13 09:38:17 +00:00
* [Em Português ](guide-pt.md )
2015-04-17 10:01:07 +00:00
* [繁體中文 ](guide-zh_tw.md )
2015-08-07 09:21:25 +00:00
* [По-русски ](guide-ru.md )
2015-07-29 13:34:18 +00:00
2015-03-13 09:18:34 +00:00
2015-05-02 20:05:12 +00:00
#### *Don't sweat the stuff you don't understand immediately*. Keep moving!
2014-05-19 19:43:44 +00:00
2015-02-11 20:50:17 +00:00
## Community
2014-07-01 00:42:21 +00:00
Our IRC channel is `#haskell-beginners` on Freenode.
2015-02-10 10:49:09 +00:00
IRC web client [here ](http://webchat.freenode.net/ ).
2014-07-01 00:42:21 +00:00
2015-02-11 20:50:17 +00:00
The haskell [mailing lists ](https://wiki.haskell.org/Mailing_lists ).
2015-02-16 05:01:50 +00:00
2015-05-02 20:05:12 +00:00
### Community Guidelines
2015-02-16 05:01:50 +00:00
2015-05-02 20:05:12 +00:00
See [the community guidelines ](coc.md ) 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.
2015-02-16 05:01:50 +00:00
2015-07-01 22:03:11 +00:00
# Installing Haskell
2014-08-04 05:49:49 +00:00
2015-07-01 22:03:11 +00:00
## DO NOT INSTALL HASKELL PLATFORM
2014-06-06 18:14:42 +00:00
2015-07-01 22:03:11 +00:00
Instead of following the instructions on Haskell.org, See [the install instructions ](install.md ) for how to get GHC & Cabal installed.
2014-05-19 20:18:36 +00:00
2015-05-02 20:05:12 +00:00
# How should I learn Haskell?
2014-05-19 20:18:36 +00:00
2015-05-02 20:07:56 +00:00
The core recommendation is to read the lectures and complete all exercises/homework for the Spring 13 version of cis194 followed by the NICTA course. Both are linked below. Everything else can be considered optional and is mentioned so you know where to look.
2015-02-11 20:50:17 +00:00
## Yorgey's cis194 course
2014-07-02 22:10:37 +00:00
2015-05-02 20:07:56 +00:00
> *Do this first*, this is the primary way we recommend being introduced to
2015-02-11 20:50:17 +00:00
> Haskell.
2014-07-02 22:10:37 +00:00
2015-02-28 04:09:34 +00:00
Available [online ](http://www.seas.upenn.edu/~cis194/spring13/lectures.html ).
2014-05-19 19:43:44 +00:00
2015-02-11 20:50:17 +00:00
[Brent Yorgey ](https://byorgey.wordpress.com )'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.
2014-05-19 19:43:44 +00:00
2015-02-10 10:49:09 +00:00
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
2015-02-11 20:50:17 +00:00
[Thompson's book ](http://www.haskellcraft.com/craft3e/Home.html ) and transition
to cis194.
2015-02-10 10:49:09 +00:00
2015-02-10 21:01:57 +00:00
---
2015-02-11 20:50:17 +00:00
## NICTA course
2015-02-10 21:01:57 +00:00
2015-05-02 20:07:56 +00:00
> This is the course we recommend doing after Yorgey's cis194 course
2015-02-10 21:01:57 +00:00
2015-02-11 20:50:17 +00:00
Available on github [here ](https://github.com/NICTA/course ).
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 NICTA course represents the core
2015-05-02 20:07:56 +00:00
recommendation of my guide and is how we teach everyone Haskell.
2014-05-19 19:43:44 +00:00
2015-02-04 21:35:00 +00:00
---
2014-07-12 15:27:29 +00:00
2015-05-02 20:05:12 +00:00
## Supplementary course after cis194 and the NICTA course
2014-07-12 15:27:29 +00:00
2015-02-10 10:49:09 +00:00
> Provides more material on intermediate topics
2014-07-12 15:27:29 +00:00
2015-05-02 20:05:12 +00:00
cs240h is available [online ](http://www.scs.stanford.edu/14sp-cs240h/ ).
2015-02-11 20:50:17 +00:00
2015-02-10 10:49:09 +00:00
This is [Bryan O'Sullivan ](https://github.com/bos )'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.
2014-07-12 15:27:29 +00:00
2015-02-10 10:49:09 +00:00
---
2015-05-02 20:05:12 +00:00
# Resources for specific topics in Haskell
2015-02-19 20:15:05 +00:00
2015-05-02 20:07:56 +00:00
These resources are not vetted or tested with learners as cis194 and NICTA course have been, but they're linked in [the topic listing ](specific_topics.md ) so you have ideas on where to begin. This includes things like intermediate/advanced concepts and subjects like tooling and text editors.
2015-02-19 20:15:05 +00:00
2014-07-29 04:06:27 +00:00
## Dialogues
2015-02-11 20:50:17 +00:00
> Hosted in this repository [here](dialogues.md).
These are actually pretty important and helpful. Look here for deep dives on a
variety of topics.