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工作流程页面上的步骤(位于“开发”标题下的'http://dev.clojure.org/display/design/JIRA workflow')来创建git格式补丁。

% git clone git://github.com/clojure/clojure.git
% cd clojure
% patch -p1 < queues.patch
diffing file src/clj/clojure/core.clj
diffing file src/jvm/clojure/lang/PersistentQueue.java
Hunk #1 FAILED at 32.
1 out of 1 hunk FAILED -- saving rejects to file src/jvm/clojure/lang/PersistentQueue.java.rej
diffing file test/clojure/test_clojure/data_structures.clj
Hunk #1 succeeded at 123 with fuzz 2.
Hunk #2 succeeded at 861 with fuzz 2.
Hunk #3 FAILED at 872.
1 out of 3 hunks FAILED -- saving rejects to file test/clojure/test_clojure/data_structures.clj.rej
diffing file 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 的 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上应用顺利,但在2014年1月30日则不顺利。在那一周内对Clojure进行了多次提交,涉及更新散列函数,在某些方面与这个补丁冲突。我还没有检查更新这个补丁可能有多简单或困难。

...