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主分支上尝试应用补丁时遇到了错误。另外,请使用JIRA工作流程页上的步骤创建git格式补丁(在“开发”标题下的“JIRA工作流程”下,请参阅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
Hunk #1 在 32 处失败。
1 out of 1 hunk 失败 -- 将拒绝保存到文件 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 out of 3 hunk 失败 -- 将拒绝保存到文件 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)) 可以使其 'adoption' 集合作为前端。

0

评论者:jafingerhut

2012年10月26日签名的 queue.patch 补丁在最近的 CLJ-1000 提交后不再干净地应用,但仅仅是由于补丁上下文中改变了一行。使用 "patch -p1 < queue.patch" 仍然可以干净地应用。鉴于 Rich 的评论建议进行更多实质性更改,不更新已过时的补丁。

0

[email protected] 发表评论:

另请参阅 CLJ-976(对 PersistentQueue 的 tagged literal 支持)

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

...