Допустим есть такой макрос:
(defmacro macro-test (alist ab &body body)
`(loop for ,ab on ,alist
do ,@body))
(macro-test '(a b c d) (a b) (format t "~s ~s~%" a b))
;; Выводит:
;; A B
;; B C
;; C D
;; D NIL
Пробовал так(не работает):
(defun defun-test (alist ab &rest body)
(loop for ab on alist
do (eval (cons 'progn body))))
(defun-test '(a b c d) '(a b) '(format t "~s ~s~%" a b))
;; Выдаёт:
;; Evaluation aborted on #<UNBOUND-VARIABLE A {10053A75D3}>.
// Просто интересно в качестве сферического коня в вакууме. Не надо спрашивать зачем оно мне нужно на практике :).