Lisp错误,未定义运算符X的形式

时间:2016-03-24 01:06:48

标签: function lisp

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

我错过了什么?

1 个答案:

答案 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))

看到区别?