2009-12-24 80 views
1

函數以序列作爲參數。在函數中,我想要創建一個相同類型參數的空序列。然後,我將存儲一些內容並將其返回,以便返回類型與參數相同。但如何在普通的lisp中創建一個空序列?

(補充序列(參數)類型的)將導致如果錯誤參數是一些長度的任何列表或向量。

我目前的解決辦法是:1。 用空列表來存儲的東西,姑且稱之爲臨時列表 2.(使序列(參數)(長度臨時列表)類型的) 3 。複製元素,然後返回

其他更好的解決方案?

+0

的空序列聽起來有點糊塗了,你不能用PUSH與序列 - 儘管有名單。也許你需要向我們展示你的代碼? – 2009-12-25 01:37:06

回答

6

返回同一類型

(subseq sequence 0 0) 
1

它看起來像是失敗了,因爲列表的類型是CONS,而不是LIST,並且矢量的類型有它的大小,你試圖覆蓋它。

您可以通過一些簡單的規則轉換的類型,如:

(cond ((eq x 'cons) 'list) 
     ((consp x) (car x)))) 

但PUSH並沒有真正的載體工作,所以我不知道你想要做什麼有,無論如何:你需要一份清單,然後轉換,對吧?

+0

哦,是的,PUSH與vectores的工作並不像列表。謝謝。但還有其他功能可以將東西存儲在矢量中。 Rainer的回答滿足了需求。 – yehnan 2009-12-25 02:16:38