In Common Lisp si può fare questo:argomenti Clojure parole chiave
(defun foo (bar &key baz quux)
(list bar baz quux))
(foo 1 :quux 3 :baz 2) ; => (1 2 3)
Clojure non ha argomenti chiave. Un'alternativa è questo:
(defn foo [bar {:keys [baz quux]}]
(list bar baz quux))
(foo 1 {:quux 3 :baz 2}) ; => (1 2 3)
Ecco troppe parentesi nidificate dover digitare e leggere tutto il tempo. Richiede anche che una hash-map esplicita sia passata come argomento piuttosto che come lista piatta.
Qual è l'equivalente Clojure più idiomatico degli argomenti delle parole chiave che non sembra che qualcuno abbia lanciato una bomba a punteggiatura?
Dal momento che questa domanda era ultima parola chiave attiva destrutturazione vincolante è stato aggiunto a Clojure. Ho fornito una risposta per indicarlo. –
@Brian dovresti considerare di aggiornare la risposta accettata. –