Setting up Haskell
I recommend installing the stack
build tool for Haskell. Once this is done, the
entire compiler toolchain can be installed just by typing stack setup
. This
should work on Linux, Windows and Mac. Alternatively, the compiler and toolchain
can be installed from distribution package managers on Linux, but these are
often out of date or configured incorrectly.
Typing stack repl
should open ghci
and stack exec ghc
can be used to run
ghc
. Example: stack exec ghc -- --make Main.hs
(the trailing --
means “the
following command line arguments should be sent to the ghc
program”)
Haskell resources
Online resources
-
#haskell IRC channel (highly recommended)
Mailing lists
Language tutorials & background reading
-
What I wish I knew when learning Haskell
A comprehensive overview of many of the intermediate/advanced Haskell topics that you may encounter. -
Thinking with types Gives an overview of many of the modern Haskell extensions for programming and (as its name suggests) thinking with types.
-
Parallel and Concurrent Programming in Haskell
Well written with lots of examples. Not meant as a book for learning Haskell. -
Learning Haskell
Gentle and fun introduction to the essentials of Haskell, including screencasts -
Learn You A Haskell For Great Good!
Nicely illustrated, hands-on tutorial -
Haskell Programming from First Principles
Excellent and deep introduction to Haskell that gets superb reviews -
Learn Haskell in 10 minutes
To get a first idea -
Write Yourself a Scheme in 48 Hours
Hands-on tutorial including advanced topics -
QuickCheck
-
Chapter 11 of Real World Haskell shows a great example of using QuickCheck in tandem with HPC.
-
Koen Claessen and John Hughes: QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs.
-
John Hughes: Software Testing with QuickCheck
-
Colin Runciman, Matthew Naylor, Fredrik Lindblad: Smallcheck and lazy smallcheck: automatic exhaustive testing for small values
-
Computerphile, John Hughes: Code Checking Automation
-
-
Monads, arrows, and applicative functors
-
Phil Wadler: Monads for functional programming
-
Conor McBride and Ross Paterson: Applicative programming with Effects
-
-
Type families
Language reference
-
The Haskell Cheatsheet
Longer than your average cheatsheet, but a nice summary of the core Haskell syntax -
Language standard
Not good for learning Haskell, but it is the definitive reference when it comes to tricky language questions
Libraries
Tools
Agda resources
-
Agda wiki - this is an excellent source of documentation and further reading.
-
Language tutorial - we’ll (very roughly) follow this tutorial by Ulf Norell and James Chapman.
-
Alternative tutorial - a more recent tutorial by Jesper Cockx, aimed at Haskell programmer’s familiar with Graham Hutton’s book. It als has some links to setting up Visual Studio Code and Agda.