Thinking Functionally with Haskell by Richard Bird | Lex | Lex