函数将序列作为参数。在函数中,我想创建一个相同类型参数的空序列。然后我将存储一些东西并返回它,使得返回类型与参数相同。但
如果参数是任何长度的列表或向量,(make-sequence(参数类型) 0 )将导致错误。
我目前的解决方案是: 1.使用空列表存储东西,我们称之为临时列表 2.(make-sequence(type-of 参数)(length temp-list)) 3.复制元素,然后返回
其他更好的解决方案?
答案 0 :(得分:6)
返回相同类型的空序列
(subseq sequence 0 0)
答案 1 :(得分:1)
看起来它失败了,因为列表的类型是CONS,而不是LIST,而vector的类型有它的大小,你试图覆盖它。
您可以通过一些简单的规则转换type-of,例如:
(cond ((eq x 'cons) 'list)
((consp x) (car x))))
但是PUSH并没有真正用于向量,所以我不确定你想要做什么,无论如何:你需要一个列表来进行,然后转换,无论如何,对吧? / p>