编写一个允许您创建函数组合的函数。该 参数列表应该采用可变数量的函数,并创建 一个函数从右到左应用它们。
(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
导致此错误的原因是什么?我看不到它。
答案 0 :(得分:2)
这是你使用apply
- 这会将最后一个参数变成一个扁平的参数列表,创建一个看起来像这样的调用:
(rest 1 2 3 4)
这可能不是你想要的.....并解释了你得到的错误。