# 10.3 反引用（DONE）

反引用允许你引用一个列表，并可以控制列表的哪些部分求值，哪些不被求值。在某些情况下，反引用和特殊表达式 quote 完全等同。举个例子，下面两个表达式会生成完全等价的结果：

```
`(a list of (+ 2 3) elements)
     ⇒ (a list of (+ 2 3) elements)
'(a list of (+ 2 3) elements)
     ⇒ (a list of (+ 2 3) elements)
```

特殊记号','，用在反引用中，用于标记哪些位置需要求值，而不是作为常量对待。Emacs Lisp 求值器会对有逗号标记的参数求值，并将求值结果放在原先的列表结构中：

```
`(a list of ,(+ 2 3) elements)
     ⇒ (a list of 5 elements)
```

','同样支持深层嵌套列表结构，例如：

```
`(1 2 (3 ,(+ 4 5)))
     ⇒ (1 2 (3 9))
```

你还可以将求值的结果拼接到列表中，并作为结果返回，此时你需要使用特殊符号',@'，这个符号会将列表内的元素作为外层列表的元素，拼接到同等层级。而等价的，不使用反引号的写法往往不具备可读性。这里有一些例子：

```
(setq some-list '(2 3))
     ⇒ (2 3)
(cons 1 (append some-list '(4) some-list))
     ⇒ (1 2 3 4 2 3)
`(1 ,@some-list 4 ,@some-list)
     ⇒ (1 2 3 4 2 3)

(setq list '(hack foo bar))
     ⇒ (hack foo bar)
(cons 'use
  (cons 'the
    (cons 'words (append (cdr list) '(as elements)))))
     ⇒ (use the words foo bar as elements)
`(use the words ,@(cdr list) as elements)
     ⇒ (use the words foo bar as elements)

```

如果反引用结果中没有替换和拼接，那么它表现起来和 quote 很像，同样生成点对，向量，字符串这些不可变对象。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://emacs-lisp.ivory.cafe/qiu-zhi/fan-yin-hao.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
