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