我试图在CL中实现一个基本的嵌套循环,但Loop宏正在抵制这个。基本上,我想找到所有可能的3位数字产品,并将它们累积到列表中。
这是我的尝试:
NIL
上面的代码由于某种原因返回{{1}}。顺便说一句,我意识到我只跑到998,但这是为了测试目的。
我该怎么做才能获得这样的列表:
(999 * 999 999 * 998 ... 998 * 998 998 * 997 ... 997 * 997 997 * 996 ... 100 * 100)
答案 0 :(得分:6)
内部循环中的COLLECT
- 子句不会影响外部循环。因此内部循环返回结果列表,但外部循环中的DO
- 子句只丢弃结果。您应该使用APPEND
或NCONC
代替DO
。如果没有性能问题,通常最好坚持使用APPEND
,即使在这种情况下NCONC
也是安全的。
(loop for x downfrom 999 to 900
append (loop for y downfrom 999 to 900
collect (* x y)))