Chapter 1. Clojure philosophy
Figure 1.1. Some of the concepts that underlie the Clojure philosophy, and how they intersect
Figure 1.2. Right-to-left shuffle: the r->lfix function shuffles math operators, moving the rightmost infix operations to the innermost nested parentheses to ensure that they execute first.
Figure 1.3. Left-to-right shuffle: the l->rfix function shuffles math operators, moving the leftmost infix operations to the inner-most nested parentheses to ensure that they execute first.
Figure 1.4. The word REPL hints at three repeated or looped phases: read, eval, and print.
Figure 1.5. More REPL phases: Clojure also has macro-expansion and compilation phases.
Figure 1.6. The reader takes a textual representation of a Clojure program and produces the corresponding data structures.
Figure 1.7. The Runner. A child’s flip book serves to illustrate Clojure’s notions of state, time, and identity. The book itself represents the identity. Whenever you wish to show a change in the illustration, you draw another picture and add it to the end of your flip book. The act of flipping the pages therefore represents the states over time of the image within. Stopping at any given page and observing the particular picture represents the state of the Runner at that moment in time.