我对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“你好”'(你好为什么) 我收到错误说
错误:表单
X
中未定义的运算符(X (CDR LST))
。
我错过了什么?
答案 0 :(得分:1)
递归调用中有太多括号。请考虑以下事项:
(is-word-in-list (x (cdr lst)))
相当于JavaScript语法中的isWordInList(x(cdr(lst)))
(is-word-in-list x (cdr lst))
相当于JavaScript语法中的isWordInList(x, cdr(lst))
看到区别?