gpt4 book ai didi

lisp - 应该是一个 lambda 表达式

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

我正在尝试从它所在的函数返回 (values str ((+ x 3) y))。

代码片段:

(if (<my condition>)
(values str ((+ x 3) y))
(values str ((+ x 2) y)))

给出错误:

(+ X 3) SHOULD BE A LAMBDA EXPRESSION 

但是 (values str (y (+ x 3))) 工作正常。

为什么?

最佳答案

无法计算 S 表达式 ((+ x 3) y),因为第一个列表元素不可调用(它应该命名一个函数或者是一个 lambda 表达式)。

所以,为了避免求值,你需要引用它:

(if (<my condition>)
(values str '((+ x 3) y))
(values str '((+ x 2) y)))

然后您将返回一个长度为 2 的列表(包含一个长度为 3 的列表和一个符号 y)作为您的第二个值。但是,如果您想返回列表中 (+ x 2)yvalues,您需要执行类似

(values str (list (+ x (if <condition> 3 2)) y))

或者可能返回 3 个值而不是 2 个:

(values str
(+ x (if <condition> 3 2))
y)

另一方面,y 是一个符号,它显然在您的图像中命名了一个函数,因此 (y (+ x 3)) 计算得很好(它在将 3 添加到 x 的结果上调用函数 y

关于lisp - 应该是一个 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22163216/

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