두 세트의 대칭 차이를 계산하는 함수를 작성했습니다 (4clojure 사이트의 문제 중 하나). 이 함수는 유닛 테스트를 통과했지만 코드가 중복되었다는 것을 감안하면 내가 원하는만큼 깨끗하지는 않습니다.Clojure에서 함수 내에서 함수를 정의하고 그 함수를 참조하려면 어떻게해야합니까?
(fn [x y] (set (concat
(keep-indexed #(if (nil? (get y %2)) %2) x)
(keep-indexed #(if (nil? (get x %2)) %2) y))))
분명히 내가 뭔가를 선호하는 것 :
은 diff 기능을 정의하고 "인라인"참조,하지만 난 하나 개 FN 블록에서 그 방법을 모르는되어(fn [x y] (set (concat (diff x y) (diff y x))))
. 기능은 특히 그들이 객체는 최고 수준의 것들 Clojure에서의가 있다는 것입니다 Clojure의에게 LISP (그리고 일반적으로 기능적인 언어)을 만드는 기능
(fn [x y]
(let [diff (... function body here ...)]
(set
(concat (diff x y) (diff y x)))))
4clojure에서 다른 사람들의 답변을 볼 수 있습니다. 질문을 완료하면 자신의 시도를 정리할 수있는 방법을 알 수 있습니다. –