2009-10-14 66 views
1

我想要一個函數比較傳入的參數的第一個參數值,然後如果它是真實的,執行一些函數,然後遞歸調用相同的函數。Lisp遞歸不調用以前的函數

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

由於某些原因,它只是通過遞歸而不是打印。謝謝。

+1

in Common Lisp,FUNCTION是一個保留的符號。不要使用它。 – 2009-10-14 07:04:28

回答

0

也許你的意思是說:

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

原始遞歸僅當(第一表達式)是「+」和 也沒有做零檢查。

+0

重新格式化後,您可以立即看到這不起作用。錯誤將是變量「equal」沒有綁定。 – Svante 2009-10-14 09:55:49

+0

你說得對,我把「()」放在「(等於...)」的周圍。手指比腦子快。 – themis 2009-10-14 18:57:50