(А пока, пожалуйста, не обращайте внимания на то, что мне нужно, это не Схемей, потому что это для 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)))
Я немного застрял в том, как обрабатывать эти элементы попарно желаемым способом, не требуя от пользователя добавлять внутренние скобки.