Lisp未绑定符号

Lisp未绑定符号,lisp,common-lisp,Lisp,Common Lisp,我正在学习lisp,我正在尝试创建简单的函数来求和arr (defun sum( N ) ( if ( null N ) nil ( + (car N ) ( sum ( cdr N ))))) (sum '(1 2 3 )) 但这也带来了错误 错误:执行:未绑定符号:“N”[] 括号应该是正确的。为什么会抛出错误,或者代码背后的逻辑有什么问题 若列表为空,它将返回nil,若不是,它将递归返回列表的第一个元素+其余元素 感谢您的帮助基本大小写不正确

我正在学习lisp,我正在尝试创建简单的函数来求和arr

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

(sum '(1 2 3 ))
但这也带来了错误

错误:执行:未绑定符号:“N”[]

括号应该是正确的。为什么会抛出错误,或者代码背后的逻辑有什么问题

若列表为空,它将返回nil,若不是,它将递归返回列表的第一个元素+其余元素


感谢您的帮助

基本大小写不正确,您正在列表中添加数字,因此无法返回
nil
,尝试添加数字时将失败。试试这个:

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

基本大小写不正确,您正在列表中添加数字,因此无法返回
nil
,尝试向其中添加数字时将失败。试试这个:

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

@这对我来说很有用:
(sum'(1233))
。。。您确定没有传递一个名为
N
的变量,该变量以前没有定义吗?没有,我修复了错误,谢谢。我使用了一些抛出错误的在线解释器,在linux上试用了一下,效果很好。@Johnyb这对我来说很有效:
(sum'(1 2 3))
。。。您确定没有传递一个名为
N
的变量,该变量以前没有定义吗?没有,我修复了错误,谢谢。我使用了一些抛出错误的在线解释器,在linux上进行了尝试,结果成功了。投票关闭了它,因为错误消息似乎来自一个糟糕的解释器,与代码没有直接关系。我也不认为这个问题和提供的答案能够帮助未来的SOUsEven。如果问题是由于一个“糟糕”的口译员造成的,其他人也可能遇到同样的口译员。他们不觉得这个问题有用吗?“如果列表为空,它将返回nil,如果不是,它将递归返回第一个元素+列表其余部分的总和。”总是尝试简单的情况,看看发生了什么<代码>()-->无<代码>(1)-->1+sum()=1+NIL。投票关闭此操作,因为错误消息似乎来自错误的解释器,与代码没有直接关系。我也不认为这个问题和提供的答案能够帮助未来的SOUsEven。如果问题是由于一个“糟糕”的口译员造成的,其他人也可能遇到同样的口译员。他们不觉得这个问题有用吗?“如果列表为空,它将返回nil,如果不是,它将递归返回第一个元素+列表其余部分的总和。”总是尝试简单的情况,看看发生了什么<代码>()-->无<代码>(1)-->1+sum()=1+NIL。