В Common Lisp вы можете сделать это:
(defun foo (bar &key baz quux)
(list bar baz quux))
(foo 1 :quux 3 :baz 2) ; => (1 2 3)
Clojure не содержит аргументов ключевого слова. Один из вариантов:
(defn foo [bar {:keys [baz quux]}]
(list bar baz quux))
(foo 1 {:quux 3 :baz 2}) ; => (1 2 3)
Это слишком много вложенных скобок, которые нужно печатать и читать все время. Для этого также требуется, чтобы явная хэш-карта передавалась как аргумент, а не как плоский список.
Какой самый идиоматический Clojure эквивалент аргументов ключевого слова, который не похож на кого-то, который запустил препинающую бомбу?