Я хочу создать функцию, которая принимает требуемый аргумент x, и либо необязательный аргумент opt1 ИЛИ аргумент ключевого слова opt2.
Сейчас у меня
(defn foo x & [opt1 {:keys [opt2]}]
...
Но указанная выше подпись позволяет мне передать аргумент ключевого слова opt2, когда присутствуют как x, так и opt1, такие как
(foo 'x 'opt1 {:opt2 'opt2})
не нравится
(foo 'x {:opt2 'opt2})
Пожалуйста, помогите мне создать функцию, которая принимает требуемый аргумент X и opt1 или opt2, где opt2 является аргументом ключевого слова.
Спасибо.
EDIT: Я хочу сделать то же самое и для других макросов. Поэтому мне все еще нужно использовать defmacro.