Trong Haskell, chúng tôi có Data.Function.on
:Trong Clojure, có chức năng nào giống Haskell không?
on :: (b -> b -> c) -> (a -> b) -> a -> a -> c
(.*.) `on` f = \x y -> f x .*. f y
Trong Clojure, tôi muốn để có thể xác định, ví dụ, một vị ngữ đảo chữ như sau:
(defn anagram? [word other-word]
(and (not= word other-word)
((on = sort) word other-word)))
Đó là tầm thường để thực hiện:
(defn on [g f] (fn [x y] (g (f x) (f y))))
Nhưng có chức năng tích hợp nào trong số hoàn thành ame mục tiêu? Tôi dường như không thể tìm thấy.
có thể '(defn on [gf] # (áp dụng g (bản đồ f% &)))' trong tinh thể varargs-if-possible – noisesmith