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

Timothy,我不太清楚你在应用这个补丁时如何得到成功的结果。你能尝试以下步骤,看看你的情况如何?我在2012年10月26日的Clojure最新master版本上尝试应用补丁时遇到了错误。另外,请使用“开发”部分下的JIRA工作流程页面上的步骤(在“JIRA workflow”下“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(对 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 中应用正常,但在1月30日并不正常。在那周,Clojure 进行了多次提交,涉及更新哈希函数,这可能与该补丁冲突。我没有检查更新补丁的难易程度。

...