В настоящее время у меня есть несколько классов синтаксиса сплайсинга, которые я использую для генерации кода.
Они выглядят так:
(define-splicing-syntax-class vec-exp
(pattern (~seq x y)
#:with result #'(vec x y)))
Цель состоит в том, чтобы иметь возможность сопоставлять последовательность x y
в любом месте изамените его на (vec x y)
.
Единственный способ, который я пока вижу, - это создать атрибут с именем result
и использовать его:
> (syntax-parse #'(position 4.2 5.7)
[(<name> <pos>:vec-exp)
(attribute <pos>.result)])
#'(vec 4.2 5.7)
Есть ли способ изменить мой кодчтобы я мог получить тот же результат, написав следующее?
> (syntax-parse #'(position 4.2 5.7)
[(<name> <pos>:vec-exp)
(attribute <pos>)])
#'(4.2 5.7) ;; not what I want