(defmacro itera-lista (var-e-lista &rest exprs) (let ((var-lista (gensym))) `(let ((,var-lista ,(cadr var-e-lista)) (,(car var-e-lista) nil)) (loop (unless ,var-lista (return nil)) (setq ,(car var-e-lista) (car ,var-lista) ,var-lista (cdr ,var-lista)) ,@exprs))))> (let ((lista '(1 2 3))) (itera-lista (x '(4 5 6)) (print (cons x lista)))) (4 1 2 3) (5 1 2 3) (6 1 2 3) NIL
Esta forma especial já existe em Lisp e denomina-se dolist.