这是我的代码:
(defun remv(a L)
(if (null L) nil
(if (typep (first L) 'list) (cons (remv a (first L)) (remv a (rest L)))
(if (= a (first L)) (remv a (rest L)) (cons (first L) (remv a (rest L)))))))
当我称之为:
(remv a '(a (b) a c))
我得到这个错误:
错误:未绑定变量:A
执行时:CCL::廉价评估环境中的进程内侦听器(1)。
键入:转到“继续”,“弹出”以中止,:R以获取可用重新启动的列表。
如果继续:重试获取A的值。
类型:其他选择。
1>
这个函数和数字一起工作,我四处查看了一下,不知道如何修复这个问题。
最佳答案
就在这里:
(remv a '(a (b) a c))
单独的
a
和同样写的(quote a)
之间有很大的区别。第一个是对以符号'a
命名的变量的引用,在您的示例中,该变量是未绑定的,而第二个是名为a
本身的符号。如果你的函数应该和数字一起工作,并且你想测试它看它是否成功,给它数字在这里,您传递一个带引号的符号列表作为第二个参数。
关于syntax - 从列表中删除给定元素的LISP函数不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36533189/