Chapter 9. Parallel and Concurrent Design
In this chapter, we will cover the following recipes:
- Using the Haskell Runtime System (RTS) options
 - Evaluating a procedure in parallel
 - Controlling parallel algorithms in sequence
 - Forking I/O actions for concurrency
 - Communicating with a forked I/O action
 - Killing forked threads
 - Parallelizing pure functions using the Par monad
 - Mapping over a list in parallel
 - Accessing tuple elements in parallel
 - Implementing MapReduce to count word frequencies
 - Manipulating images in parallel using Repa
 - Benchmarking runtime performance in Haskell
 - Using the criterion package to measure performance
 - Benchmarking runtime performance in the terminal