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

欢迎!有关此工作方式,请参阅关于页面获取更多信息。

0
集合
关闭

我很想知道为什么 `merge` 函数没有使用暂存,是否有一种更好的版本。

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

我们可以使用transducers以保持代码易于阅读并具有更好的性能
(defn merge [& maps] (when (some identity maps) (into {} cat maps)))

已将其关闭为重复: 提高地图合并性能
也许您可以使用除了通用transducer `cat`之外的其他方式来改进性能。
在不使用暂存的情况下,同样可以在 `clojure.set` 函数和其他一些函数中看到这种情况。
by
或许地图上的连接操作也应该改变?目前我没有看到使用临时变量 - 为什么不呢?
...