Макрос Лиспа (или функция) для вложенных циклов

Можно ли написать макрос 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, это чудесно.

7
задан mmj 19 December 2012 в 10:17
поделиться