Following along with some of the programs in "Real World Haskell"