gpt4 book ai didi

lisp - 评估 : undefined function NIL in Lisp

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

我正在尝试编写一个名为 calculate 的函数,它获取一个列表作为输入,并计算它的值(用作 lambda 演算缩减器)。

这是我的代码:

(defun substitue(x y z)
(cond ((atom z) (cond ((eq z y) x)
(T z)))
(T (cons (substitue x y (car z))
(substitue x y (cdr z))))))

(defun substitute-and-eval(x y z)
(eval (substitue x y z)))

(defun calculate(l)
(cond ((eq l nil) nil)
((atom l) (eval l))
(T (substitute-and-eval (calculate (cdr l))
(calculate (car l))
l))))

但是当我在 Lisp 中调用以下行时,出现错误:

(calculate '((lambda (x) (+ x 2))
(lambda (y) (y))
((lambda (z) (+ z 4)) 3)))

错误:

EVAL: undefined function NIL

所以我追查了代码,没有找到在nil上递归调用eval的地方,所以找不到问题所在。我也不确定我的计算函数是否正确执行了它应该执行的操作。由于我是 Lisp 的新手,我将不胜感激任何帮助。

最佳答案

如果我们在 ((lambda (z) (+ z 4)) 3) 上调用 calculate,它会在上面的cdr,即(3)

然后调用(substitute-and-eval nil 3 '(3))。然后尝试评估 (nil)...

有了步进器,错误的调用很容易找到,参见STEP

关于lisp - 评估 : undefined function NIL in Lisp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33306244/

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