Tôi đã viết một hàm để tính toán sự khác biệt đối xứng của hai bộ (một trong những vấn đề trên trang web 4clojure). Chức năng này đã vượt qua các bài kiểm tra đơn vị, nhưng nó không sạch như tôi muốn, với điều kiện tôi có mã trùng lặp.Làm cách nào để xác định hàm trong một hàm trong Clojure và tham chiếu hàm đó?
(fn [x y] (set (concat
(keep-indexed #(if (nil? (get y %2)) %2) x)
(keep-indexed #(if (nil? (get x %2)) %2) y))))
Rõ ràng là tôi muốn một cái gì đó như:
(fn [x y] (set (concat (diff x y) (diff y x))))
Trường hợp chức năng khác được định nghĩa và tham chiếu "inline", nhưng tôi không biết làm thế nào để làm điều đó trong một khối fn.
Bạn thực sự có thể thấy các câu trả lời của người khác về 4clojure (một khi bạn đã hoàn thành câu hỏi), điều này sẽ cho bạn biết cách bạn có thể dọn dẹp các nỗ lực của riêng mình. –