Clojure偏右

时间:2015-12-15 09:34:32

标签: clojure

我有以下功能

(defn fun [a b] (str a b))

(fun "1" "2") ;; --> "12"

感谢(partial)我可以将其转换为(fun b)并有一个固定的a

(def fun2 (partial fun "1"))

(fun2 "2") ;; --> "12"

clojure是否有(partial-right)之类的东西或者重新排列函数参数的方法,这样我就可以得到一个固定的a而不是固定的b因此具有函数(fun a)

由于

2 个答案:

答案 0 :(得分:3)

(defn partial-right [f & args1]
    (fn [& args2]
        (apply f (concat args2 args1))))

但问问自己......为什么这不是标准库的一部分?也许是其他人这种方式徘徊而且结果很糟糕?

答案 1 :(得分:0)

对于您的特定示例,您可以选择多种方式:

(defn fun 
  ([a b] (str a b))
  ([a] (str a "1")))