Recursion Lisp递归不调用以前的函数

Recursion Lisp递归不调用以前的函数,recursion,lisp,conditional,Recursion,Lisp,Conditional,我试图让一个函数比较传入参数的第一个参数和一个值,如果是真的,执行一些函数,然后递归调用同一个函数 (defun function (expression) (cond ((equal (first expression) "+") (progn (print "addition") (function (rest expression)))))) 然而,出于某种原因,它只是递归地进行,而不是打印。谢谢。也许你的意思是: (defun functi

我试图让一个函数比较传入参数的第一个参数和一个值,如果是真的,执行一些函数,然后递归调用同一个函数

(defun function (expression)
  (cond
    ((equal (first expression) "+")
     (progn (print "addition")
            (function (rest expression))))))

然而,出于某种原因,它只是递归地进行,而不是打印。谢谢。

也许你的意思是:

(defun function (expression)
  (cond (expression
         (cond (equal (first expression) "+")
               (print "addition")))
         (function (rest expression)))))
仅当(第一个表达式)为“+”时,原始表达式才会递归
并且也无法执行nil检查。

在Common Lisp中,函数是保留符号。不要使用它。重新格式化后,您会立即看到这将不起作用。错误是变量“equal”没有绑定。你是对的,我在“(equal…)周围掉了“()”。手指比大脑快。