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

标签 clojure

Write a function which allows you to create function compositions. The parameter list should take a variable number of functions, and create a function applies them from right-to-left.

(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

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

最佳答案

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

(休息 1 2 3 4)

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

关于Clojure:传递给 core$rest 的参数 (4) 数量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15535833/

相关文章:

clojure - 在 enlive 中使用 src 文件夹外部的模板

java - Hotspot 上的 Clojure 是否需要任何非 FOSS 组件

clojure - 如何在 Clojurescript 中实现(相同?a b)?

java - 为什么这两种素数采样方法运行的时间一样长?

unit-testing - 如何将测试映射到数字列表

clojure - 如何强制 Leningen 使用特定版本的 swank-clojure?

maven - NoSuchMethodError : DefaultKryoFactory - while trying to run a storm-starter project topology 错误

clojure - 改进用于迭代文本解析的 clojure 延迟序列的使用

clojure - 多机分布式Clojure的现状?

clojure - 我不知道如何记录/了解 LazySeq 的字符串值