How I Design Programs
Jeremy Gibbons is a professor at Oxford University, where he leads the Algebra of Programming research group. His main research interest is in programming methodology - that is, in better languages for writing computer programs, and better ways of using the languages we already have. He is particularly concerned with functional languages and with ways of expressing and reasoning about recurring patterns in software structure. His book Algorithm Design with Haskell (with Richard Bird) just came out.