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

标签 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 "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/

相关文章:

functional-programming - AutoLISP:如何解决无函数定义错误?

performance - Elisp 在 Windows 和 Linux 上的性能

list - lisp "list"函数/关键字有什么作用?

swift - 我应该把我的函数放在哪里?

c++ - 从一维数组中删除多次出现

javascript - 如何在声明无法更改的函数中将对象作为单个参数传播?

lisp - 如何检测输入流是否为空(但不是 EOF)?

recursion - 递归函数不起作用 '"程序车中的参数类型错误”

c - 如何解决 "control reaches end of non-void function"警告?

c++ - 以整数返回类型返回 float