The code making up Clojure's current implementation can be divided into 3 main groups: 1. The compiler -- used at the REPL and for AOT compilation, the compiler translates Clojure expressions into JVM bytecode. For this discussion, the reader lives in this group. 2. The data structures -- persistent maps, sets, and vectors, sorted and unsorted. For this discussion we'll also include here the refer