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