我有一個遞歸函數,基本上保持附加元素列表遞歸,直到滿足條件。雖然有一個問題,那就是使用append
,我們必須給它一個引用列表。這樣做計劃:遞歸與列表附加
(append (1 2) 3)
給了我們一個錯誤。
問題是,當我第一次通過一個列表的參數,我可以把'
使它成爲一個引用列表。但是,一旦我追加了一些東西到列表中,並且它被遞歸地傳遞給同一個函數,第二次append
試圖工作,它會看到列表不再被引用,所以Scheme認爲它是一個過程而不是列表。讓我告訴你的代碼的簡化版本:
(define simple
(lambda (x y)
(if (equal? x '())
(display 'success!)
(simple (cdr x) (append y (car x))))))
我們做(simple '(1 2 3) '())
我意識到上面的程序是沒用的運行功能;這只是爲了證明我在說什麼。
謝謝!
適用'quote'給個說法 – 2013-03-22 03:12:57