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