Clojure:错误数量的args(4)传递给:core $ rest

时间:2013-03-20 22:15:57

标签: clojure

  

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

(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

导致此错误的原因是什么?我看不到它。

1 个答案:

答案 0 :(得分:2)

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

(rest 1 2 3 4)

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