Lisp未绑定的符号

Joh*_*nyb 1 lisp common-lisp

我正在学习lisp,我正在尝试创建简单的函数来总结arr.

(defun sum( N )
    ( if ( null N )
         nil
         ( + (car N ) ( sum ( cdr N )))))

(sum '(1 2 3 ))
Run Code Online (Sandbox Code Playgroud)

但它会引发错误

错误:执行:未绑定的符号:"N"[]

括号应该是正确的.为什么这会抛出错误或我的代码背后的逻辑有什么问题?

如果list为空,它将返回nil,否则,它将递归返回列表的第一个元素+其余部分.

感谢帮助

Ósc*_*pez 9

基本情况不正确,您在列表中添加数字,因此您无法返回nil,当您尝试向其添加数字时,它将失败.试试这个:

(defun sum (N)
  (if (null N)
      0
      (+ (car N) (sum (cdr N)))))
Run Code Online (Sandbox Code Playgroud)