by Stuart Halloway and Aaron Bedra
The primary author, Stuart Halloway, is a presenter I've admired for lucid, approachable explanations to a surprisingly wide variety of topics, and he plies his trade well in these pages. Because Lisp will appear foreign to many mainstream developers, it requires more careful explanation of basics than do imperative and procedural languages. The authors do this well and clearly without ever coming off as glib or condescending. Rather, you feel a colleague is leading you through the basics and then through more advanced material, such as transactional memory, concurrency, and finally Lisp/Clojure macros (through Clojure v. 1.3).
Theoretical topics, such as recursion, that are fundamental to functional programming but comparatively rare in the mainstream, are explored in full detail, so that they become intuitive via substantial exposure. By the end of the book (less than 300 pages), you find yourself thinking functionally, which is an impressive feat. My only objection to this otherwise excellent volume is that it presents mostly short examples, so that it never gives you the experience of reading and working through several pages of Clojure code. That notwithstanding, I highly recommended this book.