请在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小组中被提出并讨论。

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

`
;; non-eval情况

queue [1 2 (+ 1 2)]

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

;; eval情况

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的patch CLJ-976-queue-literal-eval-and-synquote.diff(2012年7月20日)相同。它只是移除了一条Rich后来在另一个提交中添加的clojure.iml中的一行,因此这个补丁现在可以干净地应用于最新的master。

0

评论者:jafingerhut

Fogus,由于CLJ-1070补丁的最近提交,我修改后的补丁clj-976-queue-literal-eval-and-synquote-patch-v3.txt(日期为2012年10月16日)无法干净地应用。在这种情况下,不仅仅是上下文中的一行或多行发生了变化,而且是PersistentQueue实现的接口已经发生了变化。你可能最好查看最新的代码和补丁,并考虑如何更新它。

0

评论者:[email protected]

与CLJ-1078相关。

0

评论者:alexmiller

将该问题移回待定类别,因为Rich尚未审核。

0
...