2024 Clojure状态调查!中分享您的想法。

欢迎!请参阅关于页面以获取更多关于此如何工作的信息。

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创建的reducers直接调用-reduce (of IReduce)。因此,它们绕过了函数r/reduce中nil的特殊情况。

  1. 对于数组类型的集合也存在一个完全类似的问题。

  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报告)
...