by Michael Bevilacqua-Linn
In the preceding chapter, we took a look at one language feature that makes Clojure special: its Lisp-style macro system and the syntax that enables it. This code as data style is a very old characteristic of languages in the Lisp family, and Clojure is one modern instance of it.
Clojure’s Lisp-style macro system isn’t the only trick it’s got up its sleeve. In this article, we’ll take a look at another one of its defining characteristics. Clojure embodies a novel philosophy on identity, value, and state. While this philosophy makes Clojure uniquely suitable for concurrent programming, I’ve found that it also reduces the complexity of non-concurrent programs.
In this ...