Я пытаюсь вывести список с переменными внутри макрофункции, которая определяет переменную в лямбда-выражении, но eval в ней не может
(define-syntax MYVAR
(syntax-rules ()
[(_ varname value body ...) ((lambda (varname) body ...) value)]))
(define mylist '(list P Q))
(print mylist)
(MYVAR P 1
(MYVAR Q 2
(print P Q) ;;everything prints fine in here
(print (eval mylist))))
<eval> ((lambda2127 (P) (MYVAR Q 2 (print P Q) (print (eval mylist)))) 1)
<eval> ((lambda2129 (Q) (print P Q) (print (eval mylist))) 2)
<eval> (print P Q)
<eval> (print (eval mylist))
<eval> (eval mylist)
<syntax> (list P Q)
<eval> (list P Q) <--
=> Error: unbound variable: P
Я предполагаю, что eval пытается вычислить перед моим макросомкомпилирует, но не уверен,
есть ли способ повторно использовать список и оценивать его внутри макроса?
Я пытался использовать define-for-syntax
, но возникает та же ошибка