About this Book
The only difference between Shakespeare and you was the size of his idiom list—not the size of his vocabulary.
Alan Perlis[6]
6 “Epigrams in Programming,” ACM SIGPLAN Notices 17, no. 9 (September 1982).
When this book was conceived, our first instinct was to create a comprehensive comparison between Clojure and its host language, Java. After further reflection, we reached the conclusion that such an approach would be disingenuous at best and disastrous at worst. Granted, some points of comparison can’t be avoided, as you’ll see occasionally in this book; but Java is very different from Clojure, and to try to distort one to explain the other would respect neither. Therefore, we decided a better approach would be to focus on “The Clojure Way” of writing code.
When we become familiar with a programming language, the idioms and constructs of that language serve to define the way we think about and solve programming tasks. It’s therefore natural that when faced with an entirely new language, we find comfort in mentally mapping the new language onto the familiar old. But we plead with you to leave all your baggage behind; whether you’re from Java, Common Lisp, Scheme, Lua, C#, or Befunge, we ask you to bear in mind that Clojure is its own language and begs an adherence to its own set of idioms. You’ll discover concepts that you can connect between Clojure and languages you already know, but don’t assume that similar things are entirely the same.