How to Program It: Solving Problems Functionally Using Haskell · HackerTrans