- 目前这不起作用
(->> 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 解决上述所有问题。该补丁还包括单元测试。