2016-07-18 92 views
6

Perché le mappe e le parole chiave hanno entrambe un'arità extra con un argomento predefinito, mentre i set no?Perché i set di clojure non accettano un argomento predefinito?

Si tratta di un dettaglio di implementazione o di una decisione di progettazione specifica?

({:a 2} :b :not-found) ;;=> :not-found 

(:b {:a 2} :not-found) ;;=> :not-found 

;; This seems counter intuitive. 
(#{:a} :b :not-found) ;;=> clojure.lang.ArityException 

(:b #{:a} :not-found) ;;=> :not-found 
+1

Questa è sicuramente un'anomalia che potrebbe essere cancellata facilmente e utilmente: vedere [risposta di @ amalloy] (http://stackoverflow.com/a/38444128/1562315). – Thumbnail

risposta

3

Non credo che ci sia una ragione convincente: potrebbero certamente, e mi sembra abbastanza ragionevole. La funzione è stata aggiunta per mappe e parole chiave in 3b7c1612 e non è stata più toccata da allora; Immagino che non sia stato incluso in quell'iniziale commit e non ci sia stata una grande ragione per rivisitare quella decisione da allora.

Problemi correlati