Programming in Haskell - Graham Hutton November 2012