2013-05-04 37 views
2

我需要編寫一個代碼,需要一個元素,並添加到列表,作爲輸入,並返回一個新的列表,而不是舊的列表..之後,我會做recurssion,我需要新的列表...下面的代碼工作正常..但是我嘗試減少所有設置!這是因爲我迷惑,有時我會犯錯誤,我無法解決..使用缺點,列表,附加在計劃

我該怎麼做這個操作,而沒有設置! ?我嘗試只是缺點,列表和追加,但他們都沒有做這項工作。

(set! list (cons element list)) 

謝謝。

回答

4

只是(cons element list)就足夠了。

您的代碼正在改變list變量的內容。我們通常不會以功能性的方式做到這一點,唯一的方法就是像您那樣使用set!

但只返回新的列表,其中有在它之上的一個新的元素,呼叫(cons element list)足夠:

... 
(let ((newlist (cons element oldlist))) 
    ..... 
    ..... use newlist and oldlist as needed 
+0

這就是調用'(利弊E的L-)'一樣。它返回新的列表。如果你在一個函數中需要它,寫:'(define(add e l)(cons e l))'並且把它稱爲'...(add e l)...'。但是,你可以直接打電話給......(反對)。 – 2013-05-04 14:11:15

+0

非常感謝你..它工作正常。 – Palindrom 2013-05-04 14:13:34