Lisp 错误,表单中未定义运算符 X

Lisp error, undefined operator X in form

我对 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))

看出区别了吗?