(Simon Marlow) CEFP 2011, volume 7241 of LNCS, pages 339–401, 2012
Haskell provides a rich set of abstractions for parallel and concurrent programming. This tutorial covers the basic concepts involved in writing parallel and concurrent programs in Haskell, and takes a deliberately practical approach: most of the examples are real Haskell programs that you can compile, run, measure, modify and experiment with. We cover parallel programming with the Eval monad, Evaluation Strategies, and the Par monad. On the concurrent side, we cover threads, MVars, asynchronous exceptions, Software Transactional Memory, the Foreign Function Interface, and briefly look at the construction of high-speed network servers in Haskell.