2009-12-24 81 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