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