(现在请忽略我所追求的是非方案,因为这是针对非程序员的 DSL)
我想做一些与此等效的事情:
(pairwise key1 value1 key2 value2)
这将扩展为m
我定义的另一个宏(因此我不能简单地使用可变参数样式函数):
(list (cons key1 (m value1)) (cons key2 (m value2)))
我试过这个:
(define-syntax pairwise
(syntax-rules ()
((_ key value ...)
(list (cons key (m value)) ...))))
但正如我猜测的那样,它扩展到:
(list (cons key1 (m value1)) (cons key1 (m key2)) (cons key1 (m value2)))
我有点坚持如何以我想要的方式成对处理这些元素,而不需要用户添加内括号。