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

欢迎!请查看关于页面以了解有关此信息的工作方式。

+13
Collections

添加queue函数从集合中创建队列,并添加queue?谓词以检查队列属性。

补丁: clj-1078-3.patch

预审: Alex Miller

有这个功能将非常酷。将 `#queue` 添加到默认数据读取器中会更酷。

23 个答案

0

评论者:jafingerhut

Timothy,我试图将这两个 Sep 26, 2012 补丁应用到当日的最新Clojure master。由于通过git或补丁应用失败,我必须手动应用 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个hunk在32处失败。
1个hunk中有1个失败 -- 失败的更改被保存到文件 src/jvm/clojure/lang/PersistentQueue.java.rej
补丁应用文件 test/clojure/test_clojure/data_structures.clj
第1个hunk在123处成功,fuzz为2。
第2个hunk在861处成功,fuzz为2。
第3个hunk在872处失败。
3个hunk中有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

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主分支上应用顺利,但在2014年1月30日没有。在那一周内,有几次提交涉及更新可能导致与这个补丁冲突的哈希函数。我还没有检查更新补丁可能会有多难或多简单。

...