En Common Lisp puede hacer esto:argumentos de palabras clave Clojure
(defun foo (bar &key baz quux)
(list bar baz quux))
(foo 1 :quux 3 :baz 2) ; => (1 2 3)
Clojure no tiene argumentos de palabra clave. Una alternativa es esta:
(defn foo [bar {:keys [baz quux]}]
(list bar baz quux))
(foo 1 {:quux 3 :baz 2}) ; => (1 2 3)
Son demasiados los paréntesis anidados que debe escribir y leer todo el tiempo. También requiere que se pase un hash-map explícito como un argumento en lugar de una lista plana.
¿Cuál es el equivalente idiomático de Clojure de los argumentos de palabra clave que no parece que alguien desactivó una bomba de puntuación?
Dado que esta cuestión era la última palabra clave activa la desestructuración de unión ha sido añadido a Clojure. He proporcionado una respuesta para indicar esto. –
@Brian, debería considerar actualizar la respuesta aceptada. –