One of the newer features in Clojure, transducers, offers an additional means of higher-order abstraction. As I understand it-- which is not (yet) well!-- a transducer automates converting one algorithm to another (say, evolving one mapper or reducer or collector into another of the same kind).
Does your book cover the purpose and idiomatic usage of transducers, or did it reach press before that feature entered the language? If you do touch on transducers, can you offer an example that would make clear, especially for the imperatively-minded Clojure wannabe, what sort of use case or problem would call for that capability?
Unfortunately Clojure in Action 2nd Edition covers up to Clojure 1.6 and transducers were introduced in Clojure 1.7 (reducers first appeared in Clojure 1.5 so I would expect those to be covered perhaps). I asked about Clojure versions in this thread: