My copy of The Fun of Programming edited by Jeremy Gibbons and Oege de Moor came in the other day and I’ve been looking through it. It has chapters covering a wide range of topics:
functional data-structures, amortised analysis, etc.;
testing and specification with QuickCheck;
programming with folds, unfolds, etc.;
representing financial contracts;
amongst other topics. This looks to be a fascinating mixture of methods (data-structures, testing, folds, arrows, etc.) and applications (music, graphics, financial contacts, hardware description, logic programming, etc.) if a little thin for its price.