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

Data structures 为什么没有偷看!clojure瞬态向量的函数?,data-structures,clojure,transient,Data Structures,Clojure,Transient,Clojure的一些持久数据结构、向量、映射和集合都有瞬态模拟。对于向量,有pop和conj函数,类似于持久向量的pop和conj,但没有peek 是否有一个技术原因使得peek的有效实现成为可能不可能?或者它只是在大多数瞬态向量的用例中没有必要?我总能做到 (defn peek! [tvec] (get tvec (dec (count tvec)))) 但似乎奇怪的是,没有内置的解决方案。这确实是一个设计问题,最好直接针对ggroup,但是FWIW,我确实调查了peek/peek不久前,并

Clojure的一些持久数据结构、向量、映射和集合都有瞬态模拟。对于向量,有
pop
conj函数,类似于持久向量的
pop
conj
,但没有
peek

是否有一个技术原因使得
peek的有效实现成为可能不可能?或者它只是在大多数瞬态向量的用例中没有必要?我总能做到

(defn peek! [tvec] (get tvec (dec (count tvec))))

但似乎奇怪的是,没有内置的解决方案。

这确实是一个设计问题,最好直接针对ggroup,但是FWIW,我确实调查了
peek
/
peek不久前,并提供
peek似乎是一个简单的问题,创建一个新的
clojure.lang.ITransientStack
接口到并行
clojure.lang.IPersistentStack
,并让瞬态向量实现它

我的猜测是,如果这样一个接口还不可用(并被瞬变所使用),那么这可能是一个优先级问题。Clojure中已经提供了一个单线程快速堆栈实现,其形式为
java.util.stack
,因此我们不会错过这里的许多功能;随着Clojure在Clojure中的进展,语法上的便利性和到持久向量的平滑转换可能会出现


(如果投入的努力回报很高,那么对Clojure Java端的改进是有意义的,即使最终目标是放弃Java代码库的相关部分,并用Clojure中的实现替换它。如果预期回报较低,那么等待协议在Clojure中更广泛地使用可能更有意义。)tc.目前可用的一组处理瞬变的函数足以满足Clojure自己的需要,我不确定是否有人在ggroup上调用过
peek!
——至于#Clojure,我记得有一次相关的对话——因此回报可能很低……不过,你可以发起一场草根运动来改变这一点。:-)

非常感谢,这很有帮助。我不需要看一眼!功能,但如果这种情况发生变化,我可能会考虑开始草根运动。现在我不想打扰我们的英明的BDFL或他的副官。