Quoting and unquoting code
We will now explore quoting and unquoting, which are techniques used to generate expressions based on a predefined template for an expression. These techniques are foundational in creating macros, and they help structure the code of a macro to look more like its macroexpanded form.
Note
The following examples can be found in src/m_clj/c4/
quoting.clj
of the book's source code.
The quote
form simply returns an expression without evaluating it. This may seem trivial, but preventing the evaluation of an expression is actually something that is not possible in all programming languages. The quote
form is abbreviated using the apostrophe character ('
). If we quote an expression, it is returned in verbatim, as shown here:
user> 'x x user> (quote x) x
The quote
form is quite historic in Lisp. It is one of the seven primitive operators in the original Lisp language, as described in John McCarthy's paper. Incidentally, quote
is one among the rare special...