2つのセットの対称差を計算する関数を作成しました(4clojureサイトの問題の1つ)。関数は単体テストを渡しましたが、コードが重複しているので、私が望むほどきれいではありません。Clojureで関数内の関数を定義し、その関数を参照するにはどうすればよいですか?
差分機能が定義され、「インライン」を参照し、私は1つのFNブロックにそれを行う方法がわからないされて(fn [x y] (set (concat (diff x y) (diff y x))))
:
(fn [x y] (set (concat
(keep-indexed #(if (nil? (get y %2)) %2) x)
(keep-indexed #(if (nil? (get x %2)) %2) y))))
もちろん、私のようなものを好むだろう。 ClojureはLispの(そして一般的には関数型言語は)機能は特に、彼らがオブジェクトであるClojureの最初のクラスのものであるということです作る機能の
(fn [x y]
(let [diff (... function body here ...)]
(set
(concat (diff x y) (diff y x)))))
4clojureで質問を完了したら、他の人の回答を実際に見ることができます。自分の試行を整える方法を知ることができます。 –