realworldhaskell - chap 1