如何访问引用列表中的变量

ros*_*ree 3 common-lisp

我如何告诉Lisp我想要将列表评估为"列表",而不是"作为一个函数"?

(let ((x 500)) '(x . nil))
Run Code Online (Sandbox Code Playgroud)

当我输入它时,它返回

(X)
Run Code Online (Sandbox Code Playgroud)

好的,它没有评估列表(我想要的).但它并没有将变量x替换为其值.

Cac*_*tus 5

'e完全引用表达式e,无法知道要评估哪些子表达式.如果使用反引号而不是引号,则可以使用逗号取消引用子表达式.

在你的例子中,你可以做到

(let ((x 500)) `(,x . nil))
Run Code Online (Sandbox Code Playgroud)

这相当于'(500 . nil)因为x没有引用.