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

欢迎!请参见关于页面以了解更多关于如何使用本网站的信息。

+13
集合

添加queue函数,用于从集合中创建队列,并添加queue?谓词来检查是否为队列。

补丁: clj-1078-3.patch

预审核: Alex Miller

这会用得很酷。将`#queue`添加到默认数据读取器中会更酷。

23 答案

0

评论者:jafingerhut

Timothy,我尝试将这两个补丁(2012年9月26日)应用到当时的Clojure master上。由于使用git或patch无法应用0001-make-PersistentQueue-ctor-public.patch,我不得不手动应用。构建成功,但无法通过Clojure的多个测试。你检查过这些测试失败以查找原因和修复它们吗?我在Ubuntu 11.10上使用Oracle JDK 1.6和1.7进行了测试,并在这两种情况下发现了类似的失败。

0

评论者:halgari

修复了补丁。测试通过,创建了补丁,并将其应用到了源代码的不同副本上,测试仍然通过。因此,这个新的补丁应该可以使用。

0

评论者:jafingerhut

蒂莫西,我不确定你是如何应用这个补丁并成功得到结果的。你能尝试以下步骤并看看会怎样吗?我在尝试用截止至2012年10月26日的最新Clojure主分支时遇到了错误。此外,请使用JIRA工作流程页面上的步骤(在“开发”标题下的http://dev.clojure.org/display/design/JIRA workflow)创建git格式补丁。

% git clone git://github.com/clojure/clojure.git
% cd clojure
% patch -p1 < queues.patch
修补文件 src/clj/clojure/core.clj
修补文件 src/jvm/clojure/lang/PersistentQueue.java
Hunk #1 失败了在第 32 行。
1 个中的 1 个补丁失败 -- 推陈出新到文件 src/jvm/clojure/lang/PersistentQueue.java.rej
修补文件 test/clojure/test_clojure/data_structures.clj
Hunk #1 在第 123 行成功,模糊 2。
Hunk #2 在第 861 行成功,模糊 2。
Hunk #3 失败了在第 872 行。
3 个中的 1 个补丁失败 -- 推陈出新到文件 test/clojure/test_clojure/data_structures.clj.rej
修补文件 test/clojure/test_clojure/java_interop.clj

0

评论者:halgari

我使用了git apply。我试了你上面展示的方法,现在我看到了你上面展示的问题。

0

评论者:jafingerhut

只是想让你知道,创建和应用补丁的首选方法是“git format-patch master --stdout > patch.txt”来创建补丁(在JIRA工作流程页面描述的分支命令后创建更改分支),然后使用“git am --keep-cr -s < patch.txt”来应用补丁。如果补丁以此方式创建并用此命令应用时没有任何问题,那么你就绝对可以使用了。

"patch -p1 < patch.txt"命令只是作为上述格式产生的补丁或在使用该方式进行应用时出错时的辅助方法。

0

评论者:halgari

只是想让你知道,创建和应用补丁的首选方法是“git format-patch master --stdout > patch.txt”来创建补丁(在JIRA工作流程页面描述的分支命令后创建更改分支),然后使用“git am --keep-cr -s < patch.txt”来应用补丁。如果补丁以此方式创建并用此命令应用时没有任何问题,那么你就绝对可以使用了。

"patch -p1 < patch.txt"命令只是作为上述格式产生的补丁或在使用该方式进行应用时出错时的辅助方法。

0

评论者:halgari

添加了补丁

0

评论者:jafingerhut

这个补丁可以干净利落地应用,并所有测试都通过。它应该会在下次预筛查补丁列表中显示。谢谢。

0

评论者:richhickey

我们没有在别处使用queue*约定,例如vec和vector。我认为queue应该接收像vec和set这样的集合。(queue (link: 1 2 3))可以将其作为front“采用”该集合。

0

评论者:jafingerhut

2012年10月26日的补丁queue.patch在最近的CLJ-1000提交后不再干净利落应用,但仅因为出现了一行变更的补丁上下文。但在“patch -p1 < queue.patch”的情况下仍然可以干净利落应用。鉴于Rich的评论建议进行更实质性的更改,因此不更新过时的补丁。

0

评论者:[email protected]

也参见CLJ-976(永久队列的标记字面支持)

0

评论者:eigenhombre

在这里不想触怒Timothy B,但看起来要将他的补丁应用到Rich的建议上非常直接。如果现在没有人想要这个条目,我愿意尝试进行研究。

0

评论者:eigenhombre

在 clojure-dev 上发起的讨论:https://groups.google.com/forum/?fromgroups#!topic/clojure-dev/2BOqHm24Vc4

0

评论者:eigenhombre

如果此补丁(如果被接受)被采用,则取代 Timothy Baldridge 的补丁;它实现了 "queue" 和 "queue?"(但没有 "queue**");"queue" 作为一个接受集合,而不是可变参数函数,正如 Rich 的建议。

0

评论者:jafingerhut

补丁 clj-1048-queue-takes-collections.diff 在 2014 年 1 月 23 日的最新 Clojure master 上应用纯净,但在 2014 年 1 月 30 日没有应用。在那周 Clojure 中做了几个提交,涉及到更新哈希函数,这些函数与该补丁在某种程度上存在冲突。我尚未检查更新补丁可能有多容易或困难。

...