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

欢迎!请查看 关于 页面以了解此工作的一些更多信息。

0 投票
Clojure

这两者应该是相同的

(transduce (comp (take 10) (partition-all 3)) conj (range))
;; => (link: [0 1 2) (link: 3 4 5) (link: 6 7 8) (link: 9])

(reduce conj (r/reducer (range) (comp (take 10) (partition-all 3))))
;; => (link: [0 1 2] [3 4 5] [6 7 8])

原因在于 r/reducer 目前不尊重 xf 的 1 个参数的用法。

2 个答案

0 投票
_评论者:glts_

这与 plain {{reduce}} 相同


(reduce ((partition-all 3) conj) [] (range 10))
; => [[0 1 2] [3 4 5] [6 7 8]]


我相信完成是 {{transduce}} 的一个特性,但不一定是其他可转换过程。
0 投票
参考: https://clojure.atlassian.net/browse/CLJ-2338 (由 gzmask 建议)
...