我对 lisp 比较陌生。我正在研究一个确定列表中是否存在单词的函数。
(defun is-word-in-list(x lst)
(cond ((null lst) NIL)
((not (equal (car lst) x))
(is-word-in-list(x (cdr lst))))
(t
t
)
)
)
我能够编译这段代码,但是当我尝试使用 is-word-in-list "hello"'(你好,为什么) 我收到一条错误消息
Error: Undefined operator
X
in form(X (CDR LST))
.
我错过了什么?
最佳答案
递归调用中的括号过多。请考虑以下事项:
(is-word-in-list (x (cdr lst)))
相当于 JavaScript 语法中的isWordInList(x(cdr(lst)))
(is-word-in-list x (cdr lst))
等同于 JavaScript 语法中的isWordInList(x, cdr(lst))
看出区别了吗?
关于function - Lisp 错误,表单中未定义运算符 X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36191536/