翻转传递参数的顺序

Ant*_*ald 8 functional-programming clojure

是否有惯用/内置方式来翻转传递给Clojure中函数的参数顺序?

正如我在这里用辅助函数的定义:

(defn flip [f & xs]
   (apply f (reverse xs)))


(vector 1 2)       ; [1 2]
(flip vector 1 2)  ; [2 1]
Run Code Online (Sandbox Code Playgroud)

Chr*_*phy 6

我认为大多数时候创建一个你以后使用的翻转函数是有意义的,所以你的函数的变化是这样的:

(defn flip [f]
  (fn [& xs]
    (apply f (reverse xs))))
Run Code Online (Sandbox Code Playgroud)


joh*_*ers 5

翻转函数确实存在于其他函数式语言中,但在 Clojure 中也很容易做到,而且您已经做到了!

还有其他方法可以做到这一点。

这里是从Clojure的邮件列表关于它的讨论。