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,我不确定你是如何应用此补丁得到成功结果的。你能尝试以下步骤看看会发生什么吗?我在应用最新的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
Hunk #1 失败,在 32。
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工作流程页面描述的分支命令以创建更改分支之后),以及“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 (持久队列的标量支持)

0

评论人:eigenhombre

不想冒犯Timothy B,但这看起来很容易采用他的补丁来实现Rich的建议。如果现在没有人想要这个ticket,我会提出帮忙测试。

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中进行了几个提交,涉及更新散列函数,这些提交与该补丁在某些方面存在冲突。我尚未检查更新补丁的难易程度。

...