One of the principal virtues of Clojure is its simple design that results in malleable, beautiful composability. Using symbols in place of pointers is a programming practice that has existed for several decades now. It has found widespread adoption in several imperative languages. Clojure dissects that notion in order to uncover the core concerns that need to be addressed. The following subsections illustrate this aspect of Clojure.
We program using logical entities to represent values. For example, a value of
30 means nothing unless it is associated with a logical entity, let's say
age. The logical entity
age is the identity here. Now, even though
age represents a value, the value may change with time; this ...