2014-04-24 54 views
1

我在過去的2周裏一直在慢慢地學習Lisp。我遇到過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 

什麼我需要改變循環以獲得這種類型的所需結果? 如果我在「順序」一詞的用法上有誤,請糾正我。我一直在閱讀,但我很難理解這一點。

回答

5

您需要嵌套的循環:

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

謝謝!那正是我需要的。提示,精確和專業。 –