(defun f (a) (identity a))
(defmacro test (v1 lst ll)
(with-gensyms (x)
`(let ((,x ,(f ll)))
(progn ,@(mapcar #'(lambda (a)
`(list ,a ,x
,x ,v1)) lst))))))
;; работает так
CL-USER> (macroexpand '(test a (1 2 3) b))
(LET ((#:G1293 B))
(PROGN
(LIST 1 #:G1293 #:G1293 A)
(LIST 2 #:G1293 #:G1293 A)
(LIST 3 #:G1293 #:G1293 A)))
;; а нужно
(PROGN
(LIST 1 B B A)
(LIST 2 B B A)
(LIST 3 B B A))

Ответ на:
комментарий
от pseudo-cat


Ответ на:
комментарий
от dmitry_vk

Ответ на:
комментарий
от ASTRALIS


Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Я верно понимаю, что в scheme нельзя макрос выполнять изнутри макроса? (2013)
- Форум Старая, добрая рекурсия но в labels (2023)
- Форум [Lisp] туплю с defmacro (2010)
- Форум [Грызем гранит Святого Лиспа] Велосипедостроение (2009)
- Форум Вопрос про гигиенические макросы (2019)
- Форум Lisp. Написание макроса и комбинация &option &key &rest (2009)
- Форум Правильная реализация макроса в Сommon Lisp (2006)
- Форум [cl][макросы чтения] Вопрос по примеру из Let over lambda (2009)
- Форум читал старые треды лора (2009)
- Форум tabbar.el (2010)