The short answer is that unquoting only works in backquote. In the normal quoted expression, everything - including ~
and everything inside / for - has just been transmitted as is, and inside the expression with a countdown, everything inside / for ~
is evaluated (but everything else is not evaluated). So, no, not everything inside the backquoted expression remains invaluable - you can use ~
inside it to use it as a kind of template, where you "fill in the blanks" with ~
.
Edit: To indicate (pun intended) the documentation relevant to your question:
Quote:
Quote (') 'form => (quote form)
and (from the special forms section):
(quotation mark form) Sets an invaluable form.
user=> '(abc) (abc)
Please note: there is no attempt to call function a. The return value is a list of 3 characters.
Syntax quote (also called quasi-quota, backtick):
For lists / vectors / sets / maps, a syntax quote sets the template to the corresponding data structure. In a template, unqualified forms behave as if they were recursively syntactically quoted, but forms can be freed from such recursive quotation, qualifying them with inadmissibility or unquote-splicing, in which case they will be considered as expressions and they will be replaced in the template by their value or a sequence of values, respectively.
danlei
source share