LISP嵌套循环并行执行。如何强制它按顺序执行?

时间:2014-04-24 04:11:43

标签: lisp common-lisp nested-loops sequential

过去两周我一直在慢慢学习Lisp。我遇到过Lisp并行执行两个循环的情况,而不是我的目标。如果我理解正确,我想要实现的将按顺序分类。为了让您了解会发生什么,我们可以看看以下内容:

(loop for x in '(a b c d e)
      for y in '(1 2 3 4 5)
        collect (list x y))

使用这种类型的编码,可以得到:

((A 1) (B 2) (C 3) (D 4) (E 5))

但我正在寻求的是:

((A 1) (A 2) (A 3) (A 4) (A 5) (B 1) (B 2) (B 3) and so on

我需要使用Loop更改以获得此类所需结果? 如果我在使用术语"顺序"时出错了,请纠正我。我一直在阅读它,但是我有点难以理解这一点。

1 个答案:

答案 0 :(得分:5)

您需要嵌套循环:

(loop for x in '(a b c d e)
      nconc (loop for y in '(1 2 3 4 5)
                  collect (list x y)))