Napisałem funkcję do obliczenia symetrycznej różnicy dwóch zestawów (jeden z problemów na stronie 4clojure). Funkcja przeszła testy jednostkowe, ale nie jest tak czysta, jak bym chciał, biorąc pod uwagę, że mam zduplikowany kod.Jak zdefiniować funkcję w funkcji w Clojure i odwołać się do tej funkcji?
(fn [x y] (set (concat
(keep-indexed #(if (nil? (get y %2)) %2) x)
(keep-indexed #(if (nil? (get x %2)) %2) y))))
Oczywiście wolałbym coś takiego:
(fn [x y] (set (concat (diff x y) (diff y x))))
Jeżeli funkcja diff jest zdefiniowany i odwoływać "inline", ale nie wiem, jak to zrobić w jednym bloku fn.
Możesz zobaczyć odpowiedzi innych ludzi na 4clojure (po wypełnieniu pytania), które powinny dać ci wyobrażenie o tym, jak możesz uporządkować swoje własne próby. –