Clojure is an opinionated language—it doesn’t try to cover all paradigms or provide every checklist bullet-point feature. Instead it provides the features needed to
solve all kinds of real-world problems the Clojure way. To reap the most benefit from
Clojure, you’ll want to write your code with the same vision as the language itself. As
we walk through the language features in the rest of the book, we’ll mention not just
what a feature does, but why it’s there and how best to take advantage of it.
But before we get to that, we’ll first take a high-level view of some of Clojure’s most
important philosophical underpinnings. Figure 1.1 lists some broad goals that Rich
Hickey had in mind while designing Clojure and some of the more specific decisions
that are built into the language to support
these goals.
1