请在 2024 Clojure 状态调查 中分享您的想法!

欢迎!请参阅 关于 页面获取有关如何使用此网址的更多信息。

+9
语法和读取器

Clojure 的 PersistentQueue 结构已经在语言中存在一段时间了,并且已经出现在了很多代码库中。然而,创建队列的操作通常需要两步,例如

`
(conj clojure.lang.PersistentQueue/EMPTY :a :b :c)

;=> #
`

可能有一个更好的体验,如下所示

`

queue [:a :b :c]

;=> #queue [:a :b :c]

(pop #queue [:a :b :c])

;=> #queue [:b :c]
`

这种语法在 https://groups.google.com/forum/?fromgroups#!topic/clojure-dev/GQqus5Wycno 的 Clojure-dev 小组中被提出和讨论

开放性问题:队列字面量的参数应该进行 eval 吗?这的影响如下所示

`
;; non-eval case

queue [1 2 (+ 1 2)]

;=> #queue [1 2 (+ 1 2)]

;; eval case

queue [1 2 (+ 1 2)]

;=> #queue [1 2 3]
`

对这个问题答案的选择将决定实现方式。

20 个回答

0

评论者:jafingerhut

clj-976-queue-literal-eval-and-synquote-patch-v3.txt 最后修改日期为 2012 年 10 月 16 日,与 Fogus 的补丁 CLJ-976-queue-literal-eval-and-synquote.diff 最后修改日期为 2012 年 7 月 20 日相同。它仅删除了在 Rich 在不同的提交中添加到 clojure.iml 中的一行,因此此补现在可以干净地应用于最新的 master。

0

评论者:jafingerhut

自从最新提交了CLJ-1070的补丁之后,我修改后的补丁文件clj-976-queue-literal-eval-and-synquote-patch-v3.txt(2012年10月16日发布)已经无法干净地应用了。在这种情况下,不仅仅是几个上下文行发生了变化, PersistentQueue实现的面相(API接口)也已经改变了。最好的办法可能是你查看一下最新代码和补丁,考虑一下应该如何更新。

0

评论者:[email protected]

与CLJ-1078相关。

0

评论者:alexmiller

由于Rich尚未审查,此问题移回Triaged(已分类)状态。

0
参考:[https://clojure.atlassian.net/browse/CLJ-976](https://clojure.atlassian.net/browse/CLJ-976)(由fogus报告)
...