Ho scritto una funzione per calcolare la differenza simmetrica di due set (uno dei problemi sul sito 4clojure). La funzione ha superato i test unitari, ma non è pulita come vorrei, dato che ho il codice duplicato.Come si definisce una funzione all'interno di una funzione in Clojure e si fa riferimento a tale funzione?
(fn [x y] (set (concat
(keep-indexed #(if (nil? (get y %2)) %2) x)
(keep-indexed #(if (nil? (get x %2)) %2) y))))
Ovviamente io preferirei qualcosa di simile:
(fn [x y] (set (concat (diff x y) (diff y x))))
cui è definita la funzione diff e referenziato "in linea", ma non so come fare in un blocco fn.
Puoi vedere le risposte di altri popoli su 4clojure (una volta completata la domanda) che dovrebbe darti un'idea di come riordinare i tuoi tentativi. –