如何使用循环遍历Common Lisp中的序列?

时间:2014-09-17 21:33:10

标签: lisp common-lisp

以前我一直在使用“作为循环特征的元素”来迭代未知类型的序列。我刚刚发现Common Lisp的每个实现都没有提供“作为元素”,并且我想知道是否有任何干净的方法来使用循环迭代序列。我能够提供的最佳解决方案是将序列强制转换为列表,然后对其进行迭代。

1 个答案:

答案 0 :(得分:10)

不,LOOP不直接提供此类功能。如果您的LOOP实现是可扩展的(标准也没有说明),您可能能够实现这样的功能。

LOOP具有迭代列表的子句 - for item in list - 以及迭代向量的子句 - for e across vector - 请注意,字符串也是向量,一维数组。但不是两者都在一起。

否则使用MAPMAP-INTO迭代序列。

ITERATE宏提供了以下功能:for i in-sequence seq