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流程页面上的步骤创建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 hunks失败 -- 将拒绝的更改保存到文件 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/3 hunks失败 -- 将拒绝的更改保存到文件 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 应该接受 like vec 和 set 这样的集合。(queue (link: 1 2 3)) 可以使其 'adapt' 集合作为 front。

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
by

评论者:eigenhombre

此补丁(如果被接受)将取代 Timothy Baldridge 的补丁;它实现了 "queue" 和 "queue?"(但不是 "queue**");"queue" 接受一个集合而不是作为可变参数函数,如 Rich 建议。

0
by

评论由 jafingerhut 发布

patch clj-1048-queue-takes-collections.diff 在 2014 年 1 月 23 日的最新 Clojure master 上顺利应用,但在 2014 年 1 月 30 日没有应用。在那周有若干提交修改了 Clojure 中的哈希函数,与新补丁存在冲突。我没有检查更新补丁可能有多容易或困难。

...