my solutions to exercises in Real World Haskell