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

欢迎!请参阅关于页面以了解此功能的更多详细信息。

+13
集合

添加 queue 函数从集合中创建队列,并添加 queue? 断言来检查队列的属性。

补丁: clj-1078-3.patch

预筛选: Alex Miller

有这样的功能会很酷。将 `#queue` 添加到默认的数据读取器中会更酷。

23 个答案

0

评论由:jafingerhut制作

Timothy,我试图将这两个补丁应用于截至该日期的最新Clojure master。由于使用git或patch应用失败,我必须手动应用0001-make-PersistentQueue-ctor-public.patch。它构建正常,但未能通过几个Clojure测试。你检查过这些测试失败以找出原因并修复它们吗?我在使用Oracle JDK 1.6和1.7的Ubuntu 11.10上测试过,都看到了类似的失败。

0

评论由:halgari制作

已修复补丁。测试通过,创建了补丁,将其应用于源代码的另一个副本,测试仍然通过。因此,这个新补丁应该可以投入使用。

0

评论由:jafingerhut制作

蒂莫西,我不确定您如何应用这个补丁时取得成功的结果。您可以尝试以下步骤看看会怎样吗?我在尝试使用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 个失败 -- 已将拒绝项保存到文件 src/jvm/clojure/lang/PersistentQueue.java.rej
正在修补文件 test/clojure/test_clojure/data_structures.clj
Hunk #1 在 123 处成功,with fuzz 2。
Hunk #2 在 861 处成功,with fuzz 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制作

补丁 queue.patch 日期为 2012 年 10 月 26 日,在最近的 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 进行了几个在某种程度上与这个补丁冲突的提交,其中涉及更新哈希函数。我尚未检查更新补丁可能有多容易或困难。

...