How I see Clojure's reader, evaluator, and macros

Clojure is a “lisp”, a list processor, and it uses a reader and an evaluator to implement the list processing. More precisely, the evaluator of Clojure is the list processor, and everything else, primarily the reader, support that. To build the lists for the evaluator to process, the reader takes your text and builds lists out of them. The reader parses your text for S-expressions (the parentheses and the various symbols inside them) and then passes it into the evaluator which makes computations from this. A translator called a macro can intercept lists just before the evaluator, do something with it, then hand it to the evaluator. This is like lifting someone up to catch a basketball just before it goes into the net.

Bibliography

Clojure.org. ([N.d.]). Evaluation; The Reader; Macros

Higginbotham, Daniel. (2015). Clojure for the brave and true, chapters seven and eight.