gpt4 book ai didi

lisp - CLISP:变量 从函数返回时没有值

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

我在 Common Lisp 中遇到了以下问题(使用 CLISP)...以下代码运行得很好并且符合预期('->' 指定函数调用返回的内容):

(list (quote x)) -> (X)

但是,当我尝试将此行为移动到一个函数中时,

(defun quote-it (x) 
(list (quote x)))

然后我调用该函数,出现意外错误。

(quote-it x) -> SYSTEM::READ-EVAL-PRINT: variable X has no value

谁能解释一下这是怎么回事?

谢谢。

最佳答案

如果编译 quote-it,您将收到一条警告,提示您没有使用参数 x 的值。嗯,这应该是一个错误警告。

特别是 Common Lisp evaluates表达式 (quote-it x) 首先对 x 求值,然后将结果传递给 quote-it。由于您从未给 x 赋值,因此第一步失败。

试试这些:

(defparameter x 42)
(quote-it x)
==> (x)
(quote-it 'y)
==> (x)

如您所见,传递给 quote-it 的内容并不重要。

PS:一般来说,特殊运算符quote函数中很少使用。不过,正如一位评论者所建议的那样,它是中的常用工具:

(defmacro quote-it (x) `(list ',x))

如果您告诉我们您想要实现什么(在一个单独的问题中),我们(SO 社区)可能会提供更多帮助。

关于lisp - CLISP:变量 <x> 从函数返回时没有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29358186/

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