Merge pull request #12 from kissandra79/master

The instructions for ubuntu are different depending on the version
This commit is contained in:
Chris Allen 2014-07-28 22:47:56 -05:00
commit 6da4355a45

View File

@ -20,20 +20,25 @@ Cabal is equivalent to Ruby's Bundler, Python's pip, Node's NPM, Maven, etc. GHC
## Getting started
### Ubuntu
### For Ubuntu
This PPA is excellent and is what I use on all my Linux dev and build machines: http://launchpad.net/~hvr/+archive/ghc
Specifically:
- `sudo apt-get update`
- `sudo apt-get install python-software-properties`
- `sudo apt-get install python-software-properties` for Ubuntu 12.04 and below
- `sudo apt-get install software-properties-common` for Ubuntu 12.04 and above
- `sudo add-apt-repository -y ppa:hvr/ghc`
- `sudo apt-add-repository "deb http://ppa.launchpad.net/hvr/ghc/ubuntu precise main"` if not Ubuntu 12.04
- `rm /etc/apt/sources.list.d/hvr-ghc-<some ubuntu version>.list` if not Ubuntu 12.04
- `sudo apt-get update`
- `sudo apt-get install cabal-install-1.20 ghc-7.8.2 happy-1.19.3 alex-3.1.3`
- `sudo apt-get install cabal-install-1.20 ghc-7.8.3 happy-1.19.4 alex-3.1.3`
Then add `~/.cabal/bin:/opt/cabal/1.20/bin:/opt/ghc/7.8.2/bin:/opt/happy/1.19.3/bin:/opt/alex/3.1.3/bin` to your PATH (bash_profile, zshrc, bashrc, etc)
Then add `~/.cabal/bin:/opt/cabal/1.20/bin:/opt/ghc/7.8.3/bin:/opt/happy/1.19.4/bin:/opt/alex/3.1.3/bin` to your PATH (bash_profile, zshrc, bashrc, etc)
*Optional* You could also add `.cabal-sandbox/bin` to your path. Code that you are actively developing will be available to you from the command line.
This only works when your current working directory is a cabal sandbox.
### Debian
@ -52,7 +57,7 @@ For other Debian versions, just replace all occurences of "wheezy" with your ver
If, for some reason, the file `/etc/apt/sources.list.d/hvr-ghc-wheezy.list` does not exist, try the same command but with `/etc/apt/sources.list` instead.
#### Manual compilation
#### Manual compilation
You can follow the guide written for Mac OS X: http://www.davesquared.net/2014/05/platformless-haskell.html. Notes:
- set your prefix accordingly when configuring ghc
- instead of grabbing the `cabal-install` binary, grab the source and then run `bootstrap.sh` script.
@ -102,7 +107,7 @@ You don't need this if you use the .app, but if it doesn't work for you, try thi
## Yorgey course - *Do this first*, this is the primary way I recommend being introduced to Haskell.
http://www.seas.upenn.edu/~cis194/lectures.html Brent Yorgey's course is the best I've found so far and replaces both Yann Esposito's HF&H and the NICTA course. This course is particularly valuable as it will not only equip you to write Haskell but also help you understand parser combinators.
http://www.seas.upenn.edu/~cis194/lectures.html Brent Yorgey's course is the best I've found so far and replaces both Yann Esposito's HF&H and the NICTA course. This course is particularly valuable as it will not only equip you to write Haskell but also help you 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 http://learnyouahaskell.com/ and transition to cis194.
@ -266,7 +271,7 @@ let a = 1 * a -- not guarded, (*) is strict
## Parallelism/Concurrency
- http://chimera.labs.oreilly.com/books/1230000000929 This book by Simon Marlow is probably the best I've ever read on the topics of Parallelism and Concurrency:
- http://chimera.labs.oreilly.com/books/1230000000929 This book by Simon Marlow is probably the best I've ever read on the topics of Parallelism and Concurrency:
- http://kukuruku.co/hub/haskell/haskell-testing-a-multithread-application A thorough walk-through on testing & incremental development of a multi-threaded application in Haskell
@ -298,7 +303,7 @@ Also, reimplement Control.Monad. Functions like `mapM` or `sequence` are good op
The NICTA course can be used as a guide to this process, which will also involve writing your own Applicative as well.
From:
From:
- http://www.reddit.com/r/haskell/comments/29eke6/basic_program_ideas_for_learning_about_monads/cik5aj6
- http://www.reddit.com/r/haskell/comments/29eke6/basic_program_ideas_for_learning_about_monads/cik5trg