是否有惯用/内置方式来翻转传递给Clojure中函数的参数顺序?
正如我在这里所做的帮助函数的定义:
(defn flip [f & xs]
(apply f (reverse xs)))
(vector 1 2) ; [1 2]
(flip vector 1 2) ; [2 1]
答案 0 :(得分:4)
答案 1 :(得分:4)
我认为大多数时候创建一个稍后使用的翻转函数是有道理的,所以函数的变化就是这样:
(defn flip [f]
(fn [& xs]
(apply f (reverse xs))))
答案 2 :(得分:3)
您还可以使用匿名内联函数重新定义参数的顺序。
(vector "a" "b") ; ["a" "b"]
(#(vector %2 %1) "a" "b") ; ["b" "a"]