【发布时间】:2012-04-27 03:27:08
【问题描述】:
是否可以编写一个 Common Lisp 宏,它接受一个维度和变量列表、一个(迭代的)主体,并创建由列表指定的尽可能多的嵌套循环组成的代码?
也就是说,类似于:
(nested-loops '(2 5 3) '(i j k) whatever_loop_body)
应该扩展为
(loop for i from 0 below 2 do
(loop for j from 0 below 5 do
(loop for k from 0 below 3 do
whatever_loop_body)))
跟进
正如怀远正确指出的那样,我必须知道在编译时传递给宏的参数。如果你真的像我一样需要一个函数,看下面。
如果你对宏没问题,就去6502的递归解决方案,很棒。
【问题讨论】:
-
您使用的是哪种 Lisp 方言? Common Lisp?
标签: recursion macros lisp nested-loops