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

欢迎!请参阅 关于 页面以了解此工作的更多信息。

+13
Collections

添加 queue 函数从集合中创建队列和 queue? 断言函数来检查是否为队列。

补丁:clj-1078-3.patch

预筛选:Alex Miller

拥有这会非常酷。将其添加到默认的数据读取器中的 `#queue` 甚至更酷。

23 答案

0

评论者:jafingerhut

Timothy,我尝试将这两个 Sep 26, 2012 补丁应用到该日期的最新 Clojure master。由于使用 git 或 patch 无法应用 0001-make-PersistentQueue-ctor-public.patch,我手动应用了这个补丁。它构建良好,但未通过几个 Clojure 测试。您是否调查了这些测试失败,以找出原因并修复它们?我在 Ubuntu 11.10 和 Oracle JDK 1.6 及 1.7 上进行了测试,并使用了同样的问题。

0

评论由:halgari 提出

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

0

评论者:jafingerhut

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

% 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
第1个块在32处失败。
1个块中有1个失败 -- 将拒绝的内容保存到文件 src/jvm/clojure/lang/PersistentQueue.java.rej
正在修补文件 test/clojure/test_clojure/data_structures.clj
第1个块在123处成功,模糊度为2。
第2个块在861处成功,模糊度为2。
第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)) 可以使集合作为头部。

0

评论者:jafingerhut

补丁文件 queue.patch 日期为 2012 年 10 月 26 日,在最近的 CLJ-1000 提交后不再无问题地应用,但这只因为补丁上下文中的一行更改。使用 "patch -p1 < queue.patch" 仍然可以无问题地应用。不更新过时的补丁,因为 Rich 的评论建议进行更实质性的更改。

0

评论者:[email protected]

另见 CLJ-976(为 PersistentQueue 添加标记字面支持)

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 有几项提交涉及到更新哈希函数,与这个补丁存在某些冲突。我没有检查更新补丁可能有多容易或困难。

...