Chapter 1. Clojure philosophy


This chapter covers

  • The Clojure way
  • Why a(nother) Lisp?
  • Functional programming
  • Why Clojure isn’t especially object-oriented

Learning a new language generally requires significant investment of thought and effort, and it’s only fair that programmers expect each language they consider learning to justify that investment. Clojure was born out of creator Rich Hickey’s desire to avoid many of the complications, both inherent and incidental, of managing state using traditional object-oriented techniques. Thanks to a thoughtful design based in rigorous programming language research, coupled with a fervent look toward practicality, Clojure has blossomed into a programming language playing an undeniably important role in the current state of the art in language design.

In the grand timeline of programming language history, Clojure is an infant, but its colloquialisms (loosely translated as “best practices” or idioms) are rooted in 50+ years of Lisp, as well as 15+ years of Java history.[1] Additionally, the enthusiastic community that has exploded since its introduction has cultivated its own set of unique idioms.

1 Although it draws on the traditions of Lisps (in general) and Java, Clojure in many ways stands as a direct challenge to them for change.

1.1. The Clojure way

1.2. Why a(nother) Lisp?

1.3. Functional programming

1.4. Why Clojure isn’t especially object-oriented

1.5. Summary