我写了一个函数来计算两个集合的对称差(在4clojure网站上的一个问题)。该函数通过了单元测试,但我觉得它不够简洁,因为我有重复的代码。
(fn [x y] (set (concat
(keep-indexed #(if (nil? (get y %2)) %2) x)
(keep-indexed #(if (nil? (get x %2)) %2) y))))
显然,我更喜欢像这样的东西:
(fn [x y] (set (concat (diff x y) (diff y x))))
在哪里定义了 diff 函数并且被“inline”引用,但我不知道如何在一个函数块中完成这个操作。