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