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

蒂莫西,我不确定你在应用此补丁时如何获得成功的结果。你能尝试以下步骤,看看会发生什么吗?我在使用截至2012年10月26日的最新Clojure master时尝试应用补丁时遇到错误。另外,请使用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
块 #1 失败于 32。
1 个块失败 - 将拒绝保存到文件 src/jvm/clojure/lang/PersistentQueue.java.rej
正在修补文件 test/clojure/test_clojure/data_structures.clj
块 #1 在 123 处成功,模糊度为 2。
块 #2 在 861 处成功,模糊度为 2。
块 #3 失败于 872。
3 个块失败 - 将拒绝保存到文件 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日没有。在那一周,Clojure 更新了几个涉及更新散列函数的提交,这些提交与这个补丁存在冲突。我没有检查更新补丁的难易程度。

...