В 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 аргументов с ключевыми словами, который не выглядит, как будто кто-то выбил пунктуацию?