Identity, value, and epochal time model
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 brings us to the notion of state
, which represents the value of the identity at a certain time. Hence, state
is a function of time and is causally related to what we do in the program. Clojure's power lies in binding an identity with...