以前我一直在使用“作为循环特征的元素”来迭代未知类型的序列。我刚刚发现Common Lisp的每个实现都没有提供“作为元素”,并且我想知道是否有任何干净的方法来使用循环迭代序列。我能够提供的最佳解决方案是将序列强制转换为列表,然后对其进行迭代。
答案 0 :(得分:10)
不,LOOP
不直接提供此类功能。如果您的LOOP
实现是可扩展的(标准也没有说明),您可能能够实现这样的功能。
LOOP
具有迭代列表的子句 - for item in list
- 以及迭代向量的子句 - for e across vector
- 请注意,字符串也是向量,一维数组。但不是两者都在一起。
否则使用MAP
或MAP-INTO
迭代序列。
ITERATE
宏提供了以下功能:for i in-sequence seq
。