提交 e1682194 编写于 作者: G guenchi

Update exercise_03.md

上级 e1e72e78
......@@ -85,4 +85,22 @@
这个时候我们需要使用高级版的quote:quasiquote,它表示接受结构内的部分求值行为。为简便我们在下面的例子中只使用它的读取器宏`` ` ``,它是往右斜的单引号。
同时我们需要`unquote`来解引用,它的读取器宏是逗号`,`
\ No newline at end of file
同时我们需要`unquote`来解引用,它的读取器宏是逗号`,``unquote`代表它包裹的最外层内容得到执行,如果是用读取器宏`,`,即是它最右侧的表达式得到执行。
`` `(* ,(+ 1 2) (- 3 4)) ``会先执行`(+ 1 2)`并将输出3放在它原有的位置,其他结构则不会变化:
`'(* 3 (- 3 4))`
```
`(* ,(+ 1 2) ,(- 3 4)) -> '(* 3 -1)
`,(* ,(+ 1 2) ,(- 3 4)) -> -3
```
与之配套的还有`unquote-splicing`,读取器宏为`,@`。 它将求值后得到的新链表展开成为单个的元素。
```
`(1 2 ,(reverse '(5 4 3)) 6 7) -> '(1 2 (3 4 5) 6 7)
`(1 2 ,@(reverse '(5 4 3)) 6 7) -> '(1 2 3 4 5 6 7)
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册