2024 Clojure现状调查中分享您的想法吧!

欢迎!请参阅关于页面获取更多关于这个如何工作的信息。

0
集合
已关闭

我在想为什么`merge`函数没有使用transients,以及是否存在更好版本的实现。

而不是这个
(defn merge [& maps] (when (some identity maps) (reduce #(conj (or %1 {}) %2) maps)))

我们可以使用transducer来保持代码的可读性,并提高性能
(defn merge [& maps] (when (some identity maps) (into {} cat maps)))

已关闭为重复问题: 提升map合并的性能
也许可以通过不使用通用transducer `cat` 的另一种方式来完成,这可能会有额外的性能提升。
不使用transient时的情况在`clojure.set`函数中可以看到,也许还有其他一些函数也是如此。
by
也许地图上的conj操作也应该改变?目前我看不到使用transient的原因 - 为什么不呢?
...