【发布时间】:2014-09-17 21:33:10
【问题描述】:
以前我一直在使用循环的“成为元素”功能来迭代未知类型的序列。我刚刚发现在 Common Lisp 的每个实现中都没有提供“作为元素”,我想知道是否有任何干净的方法可以使用循环遍历序列。我能想到的最佳解决方案是将序列强制为一个列表,然后对其进行迭代。
【问题讨论】:
标签: lisp common-lisp
以前我一直在使用循环的“成为元素”功能来迭代未知类型的序列。我刚刚发现在 Common Lisp 的每个实现中都没有提供“作为元素”,我想知道是否有任何干净的方法可以使用循环遍历序列。我能想到的最佳解决方案是将序列强制为一个列表,然后对其进行迭代。
【问题讨论】:
标签: lisp common-lisp
不,LOOP 不直接提供这样的功能。如果您的 LOOP 实现是可扩展的(标准也没有提及),您也许可以实现这样的功能。
LOOP 具有迭代列表的子句 - for item in list - 和迭代向量的子句 - for e across vector - 请注意,字符串也是向量,一维数组。但不能同时使用。
否则使用MAP 或MAP-INTO 迭代序列。
ITERATE 宏提供了这样一个功能:for i in-sequence seq。
【讨论】: