从适当的序列中得出(广义的)序列

时间:2019-05-22 16:43:57

标签: common-lisp sequence

许多Common Lisp序列函数以适当序列作为输入,并返回 sequence 作为输出。从适当的序列开始,函数如何不返回另一个适当的序列?例子吗?

1 个答案:

答案 0 :(得分:3)

(mapcan #'rest (list (list 0 1 2) (cons :a :b)))
=> (1 2 . :b)

...但是,的确,大多数时候您可以期望得到正确的序列;可能由于各种原因(执行者的成本等)而未指定功能。

顺便说一句,请注意,NCONC被指定返回一个列表(至少在HyperSpec中),但是在同一页面中给出的形式定义允许包含非列表,例如(nconc nil 2)为2。结果类型的这种不完全过度逼近(在签名中,而不是函数的实际描述)污染了所有其他结果:

(mapcan #'rest (list (list) (cons 1 2)))
=> 2

另请参阅Proposed ANSI ChangesANSI Clarifications and Errata