gpt4 book ai didi

lisp - LISP 中的反引号是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:37 25 4
gpt4 key购买 nike

我有这个宏,它重写了定义。如果我删除“`”反引号,它将不起作用。什么解释?

(defmacro define ((name &rest r) body) 
`(defun ,name ,r ,body))

最佳答案

单引号后跟值的书面表示将产生该值:

例子: '(1ד富”)将产生一个打印为 (1 x "foo") 的值。

现在假设我不想在列表中使用文字符号 x。我的程序中有一个变量 x,我想插入x 绑定(bind)到的值。

为了标记我想要 x 的值而不是符号 x,我在x之前插入了一个逗号:

'(1 ,x "foo")

虽然它不会按原样工作 - 我现在得到一个具有文字逗号和符号 x 的值。问题是 quote 不知道逗号约定。

Backtick 或 backquote 知道逗号约定,因此会给出正确的结果:

> `(1 ,x "foo")
(1 3 "foo") ; if the value of x is 3

在这里阅读更多:http://www.lispworks.com/documentation/HyperSpec/Body/02_df.htm

关于lisp - LISP 中的反引号是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30150186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com