3

编写一个函数,允许您创建函数组合。参数列表应采用可变数量的函数,并创建一个从右到左应用它们的函数。

(fn [& fs]
  (fn [& args]
    (->> (reverse fs)
         (reduce #(apply %2 %1) args))))

http://www.4clojure.com/problem/58

=> (= [3 2 1] ((_ rest reverse) [1 2 3 4]))

clojure.lang.ArityException: Wrong number of args (4) passed to: core$rest

是什么导致了这个错误?我看不到它。

4

1 回答 1

2

它在您的使用中apply- 这会将最后一个参数变成一个扁平的参数列表,创建一个看起来像这样的调用:

(rest 1 2 3 4)

这可能不是您想要的......并解释了您遇到的错误。

于 2013-03-20T23:34:21.067 回答