Programming in Haskell / Edition 2 by Graham Hutton