Dans Common Lisp, vous pouvez faire ceci:
(defun foo (bar &key baz quux)
(list bar baz quux))
(foo 1 :quux 3 :baz 2) ; => (1 2 3)
Clojure n'a pas d'argument de mot clé. Une alternative est la suivante:
(defn foo [bar {:keys [baz quux]}]
(list bar baz quux))
(foo 1 {:quux 3 :baz 2}) ; => (1 2 3)
C'est trop de crochets imbriqués pour avoir à taper et à lire tout le temps. Cela nécessite également qu'une hash-map explicite soit transmise en tant qu'argument plutôt qu'en tant que liste à plat.
Quel est l'équivalent Clojure le plus idiomatique des arguments de mots clés qui ne semblent pas déclencher une bombe de ponctuation?