函數以序列作爲參數。在函數中,我想要創建一個相同類型參數的空序列。然後,我將存儲一些內容並將其返回,以便返回類型與參數相同。但如何在普通的lisp中創建一個空序列?
(補充序列(參數)類型的)將導致如果錯誤參數是一些長度的任何列表或向量。
我目前的解決辦法是:1。 用空列表來存儲的東西,姑且稱之爲臨時列表 2.(使序列(參數)(長度臨時列表)類型的) 3 。複製元素,然後返回
其他更好的解決方案?
函數以序列作爲參數。在函數中,我想要創建一個相同類型參數的空序列。然後,我將存儲一些內容並將其返回,以便返回類型與參數相同。但如何在普通的lisp中創建一個空序列?
(補充序列(參數)類型的)將導致如果錯誤參數是一些長度的任何列表或向量。
我目前的解決辦法是:1。 用空列表來存儲的東西,姑且稱之爲臨時列表 2.(使序列(參數)(長度臨時列表)類型的) 3 。複製元素,然後返回
其他更好的解決方案?
返回同一類型
(subseq sequence 0 0)
它看起來像是失敗了,因爲列表的類型是CONS,而不是LIST,並且矢量的類型有它的大小,你試圖覆蓋它。
您可以通過一些簡單的規則轉換的類型,如:
(cond ((eq x 'cons) 'list)
((consp x) (car x))))
但PUSH並沒有真正的載體工作,所以我不知道你想要做什麼有,無論如何:你需要一份清單,然後轉換,對吧?
哦,是的,PUSH與vectores的工作並不像列表。謝謝。但還有其他功能可以將東西存儲在矢量中。 Rainer的回答滿足了需求。 – yehnan 2009-12-25 02:16:38
的空序列聽起來有點糊塗了,你不能用PUSH與序列 - 儘管有名單。也許你需要向我們展示你的代碼? – 2009-12-25 01:37:06