Solutions to Real World Haskell exercises