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

欢迎!请查看 关于 页面,了解更多关于该网站如何运作的信息。

+13
集合

添加 `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版本上尝试应用这个补丁时遇到了错误。另外,请使用“Development”标题下的“JIRA workflow”页面上的步骤来创建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
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 workflow页面描述的分支指挥令之后,为你的更改创建分支),以及“git am --keep-cr -s < patch.txt”来应用补丁。如果一个补丁是以这种方式创建的,并且使用该命令可以干净地应用,那么你就没问题了。

“patch -p1 < patch.txt”命令是上述生成格式之外的补丁应用时的辅助方法,或者是在使用该方法时出现错误的情况。

0

评论者:halgari

只是为了让你知道,创建和应用补丁的首选方式是“git format-patch master --stdout > patch.txt”来创建补丁(在执行JIRA workflow页面描述的分支指挥令之后,为你的更改创建分支),以及“git am --keep-cr -s < patch.txt”来应用补丁。如果一个补丁是以这种方式创建的,并且使用该命令可以干净地应用,那么你就没问题了。

“patch -p1 < patch.txt”命令是上述生成格式之外的补丁应用时的辅助方法,或者是在使用该方法时出现错误的情况。

0

评论者:halgari

已添加补丁

0
by

评论者:jafingerhut

这个更改可以干净地应用并通过所有测试。它应该会在下一批预筛补丁中出现。谢谢。

0
by

评论由:richhickey 提出

我们不会在别处使用 queue* 的约定,例如 vec 和 vector。我认为 queue 应该接受一个类似 vec 和 set 的集合。例如 (queue (link: 1 2 3)) 可以改为 '采用' 集合作为前部。

0
by

评论者:jafingerhut

2012年10月26日的补丁队列.patch 在最近的 CLJ-1000 提交后不再干净地应用,但仅因为补丁上下文中的一行被修改。使用 "patch -p1 < queue.patch" 仍然可以干净地应用。不更新陈旧的补丁,因为 Rich 的评论建议进行更有实质性的更改。

0
by

评论由:[email protected] 提出

另请参考 CLJ-976(对 PersistentQueue 支持的标记字面量)

0
by

评论由:eigenhombre 提出

不想触怒 Timothy B,但是看起来将他的补丁应用到 Rich 的建议上是直截了当的。如果没有人想接手这个任务,我可以尝试一下。

0
by

评论由:eigenhombre 提出

clojure-dev 上的讨论开始于:https://groups.google.com/forum/?fromgroups#!topic/clojure-dev/2BOqHm24Vc4

0

评论由:eigenhombre 提出

此补丁(如果被接受)将取代Timothy Baldridge的补丁;实现“队列”和“队列?”(但不包括“队列**”);“队列”接受集合而不是变长函数,正如Rich的建议。

0

评论者:jafingerhut

补丁clj-1048-queue-takes-collections.diff于2014年1月23日干净地应用于Clojure的最新主版本,但截至2014年1月30日并未应用。在该周期间Clojure进行了一些提交,包括更新散列函数,这些函数与该补丁存在某种冲突。我尚未检查更新补丁可能容易或困难的程度。

...