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

欢迎!请参阅关于页面获取更多信息。

+13
Collections

添加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测试。您是否调查过这些测试失败,看看是否能找到原因并进行修复?我在装有Oracle JDK 1.6和1.7的Ubuntu 11.10上进行了测试,并发现两种情况都有类似的失败。

0

评论由:halgari作出

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

0

评论作者:jafingerhut

Timothy,我不确定你是如何成功应用这个补丁的。你能尝试以下步骤并看看你怎么了?我在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
Hunk #1 FAILED at 32.
1 out of 1 hunk FAILED -- saving rejects to file src/jvm/clojure/lang/PersistentQueue.java.rej
修补文件 test/clojure/test_clojure/data_structures.clj
Hunk #1 succeeded at 123 with fuzz 2.
Hunk #2 succeeded at 861 with fuzz 2.
Hunk #3 FAILED at 872.
1 out of 3 hunks FAILED -- saving rejects to file 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

我们不会在其他地方使用rotequeued化约定,例如vec和vector。我认为queue应该接收像vec和set这样的集合。 (queue (link: 1 2 3)) 可以使集合'采用'作为front。

0

评论作者:jafingerhut

2012年10月26日的补丁queue.patch在最近的CLJ-1000提交后不再平滑应用,但仅仅是因为补丁上下文中的一行更改。使用 "patch -p1 < queue.patch" 仍然可以平滑应用。由于Rich的评论建议进行更实质性的更改,因此不再更新不新鲜的补丁。

0

评论者:[email protected]

另见CLJ-976(对PersistentQueue的tagged literal支持)

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中做了几个提交,涉及到更新哈希函数,这与此补丁存在某种冲突。我没有检查更新此补丁的难易程度。

...