- 这目前不可工作
(->> 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(来自IReduce)。因此,它们绕过了函数r/reduce中对nil的特殊情况的覆盖。
对于类型为数组的集合,存在一个完全相似的问题。
补丁CLJS-700错误地将coll-fold定义为类型cljs.core/IPersistentVector。这应该是cljs.core/PersistentVector。(在ClojureScript中不存在IPersistentVector协议。)
我将很快附上一个补丁,该补丁通过实现nil和数组上的IReduce来解决上述所有问题。该补丁还包括单元测试。