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
by

评论者:jafingerhut

蒂莫西,我不确定你是如何成功应用这个补丁的。你能尝试一下下面的步骤看看会怎样吗?在我这里,使用2012年10月26日的Clojure最新主分支尝试应用补丁时会出错。另外,请使用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 未通过 at 32。
1 of 1 hunk 未通过 -- saving rejects to file src/jvm/clojure/lang/PersistentQueue.java.rej
修补文件 test/clojure/test_clojure/data_structures.clj
Hunk #1 成功 at 123 with fuzz 2。
Hunk #2 成功 at 861 with fuzz 2。
Hunk #3 未通过 at 872。
1 of 3 hunks 未通过 -- saving rejects to file test/clojure/test_clojure/data_structures.clj.rej
修补文件 test/clojure/test_clojure/java_interop.clj

0
by

评论者:halgari

我使用了git apply。我试了你上面显示的方法,现在我也遇到了你上面显示的问题。

0
by

评论者:jafingerhut

只是让你了解,创建和应用补丁的最佳方法是使用 "git format-patch master --stdout > patch.txt" 来创建补丁(在JIRA工作流程页面描述的分支命令之后创建改变分支),以及使用 "git am --keep-cr -s < patch.txt" 来应用补丁。如果补丁是这样创建的并且使用该命令干净地应用,那么你绝对是好的。

"patch -p1 < patch.txt" 命令只是有时用来尝试应用上面未生成的格式的补丁或在该方法应用时出现错误的辅助方法。

0
by

评论者: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 这样的集合。(队列(链: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遇到了更新哈希函数的几个提交,这可能会与这个补丁产生冲突。我没有检查更新补丁的难易程度。

...