Я писал макросы Common Lisp, поэтому макросы R5R в Scheme для меня немного неестественны. Я думаю Я понял идею, за исключением того, что я не понимаю, как можно использовать векторные шаблоны в правилах синтаксиса:
(define-syntax mac
(syntax-rules ()
((mac #(a b c d))
(let ()
(display a)
(newline)
(display d)
(newline)))))
(expand '(mac #(1 2 3 4))) ;; Chicken's expand-full extension shows macroexpansion
=> (let746 () (display747 1) (newline748) (display747 4) (newline748))
Я не понимаю, как бы я использовал макрос, который требует, чтобы его аргументы были записаны как вектор:
(mac #(1 2 3 4))
=>
1
4
Есть ли какая-то техника, которая использует эти шаблоны?
Спасибо!