为什么没有偷看!clojure瞬态向量的函数?

Rob*_*lan 10 clojure transient data-structures

Clojure对其一些持久性数据结构,向量,映射和集合具有瞬态类似物.对于向量,有pop!conj!函数,类似于popconj持久向量,但没有peek!.

是否有技术上的原因使得有效实施peek!不可能?或者在瞬态向量的大多数用例中它是不是必需的?我总能这样做

(defn peek! [tvec] (get tvec (dec (count tvec))))
Run Code Online (Sandbox Code Playgroud)

但似乎很奇怪,没有内置的解决方案.

Mic*_*zyk 5

这的确是最好的指向ggroup一个设计问题,但FWIW,我没有调查peek/ peek!前一段时间,并提供peek!似乎是创建一个新的简单的事情clojure.lang.ITransientStack接口平行clojure.lang.IPersistentStack,并具有瞬态载体实现它.

我的猜测是,如果这样的接口尚未可用(并由瞬态使用),则可能是优先级问题.Clojure中已经提供了单线程快速堆栈实现java.util.Stack,因此我们不会错过这里的许多功能; 句法方便和顺利转换为持久性向量可能会在Clojure-in-Clojure上取得进展.

(在投入的努力回报很高的情况下,即使最终目标最终放弃Java代码库的相关部分并将其替换为Clojure中的实现,对Clojure的Java端的改进也是有意义的.等待协议更普遍地使用可能更有意义等.当前可用的处理瞬态的函数集足以满足Clojure自身的需求,我不确定peek!ggroup上是否有过调用- 至于#clojure,我记得一个相关的谈话 - 所以回报可能被判断为低......你可以开始草根运动来改变这一点.:-))