中分享您的想法!

欢迎!请参阅关于页面,了解更多关于此站点的工作方式。

0
ClojureScript
  1. 目前不起作用

(->> nil

 (r/map identity)
 (r/reduce + 0))
 ; org.mozilla.javascript.JavaScriptException: Error: No protocol method IReduce.-reduce defined for type null

原因是r/reducer或r/folder创建的reducer直接调用-Reduce(of IReduce)。因此,它们绕过了函数r/reduce中对nil的特殊情况。

  1. 对于类型为array的集合也存在一个类似的问题。

  2. 补丁CLJS-700错误地将coll-fold定义为类型cljs.core/IPersistentVector。这应该是cljs.core/PersistentVector。(ClojureScript中不存在协议IPersistentVector。)

我将很快附上一个补丁,该补丁通过为nil和数组实现IReduce来解决上述所有问题。该补丁还包括单元测试。

18 答案

0

评论由:dnolen 发布

是的,但是现在我们有新的逻辑,我们至少可以测试其他类型的回溯丢失。

0

评论由:dnolen 发布

好,我试图应用这个补丁并运行{{./script/benchmarks}},但补丁不能再应用了。我们可以将补丁重新基准对master吗?谢谢。如果您也想尝试基准,请按照以下说明安装JS引擎 - http://github.com/clojure/clojurescript/wiki/Running-the-tests。然后您也可以在命令行中运行基准。我注意到没有reducers基准,我将添加一些。

0
参考: https://clojure.atlassian.net/browse/CLJS-736(由jdevuyst报告)
...