Examples and Exercises from Real World Haskell