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测试。你调查过这些测试失败的原因并修复了吗?我在Ubuntu 11.10上使用Oracle JDK 1.6和1.7进行了测试,并且在使用这两个版本时看到了相似的失败。

0

评论者:halgari

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

0

评论者:jafingerhut

Timothy,我不确定你是如何应用这个补丁并得到成功结果的。你能尝试下面的步骤看看情况如何吗?我在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
patching file src/clj/clojure/core.clj
patching file src/jvm/clojure/lang/PersistentQueue.java
第1个块在32处失败。
1个块中的1个失败 -- 将拒绝保存到文件 src/jvm/clojure/lang/PersistentQueue.java.rej
patching file test/clojure/test_clojure/data_structures.clj
第1个块在123处成功,模糊度为2。
第2个块在861处成功,模糊度为2。
第3个块在872处失败。
3个块中的1个失败 -- 将拒绝保存到文件 test/clojure/test_clojure/data_structures.clj.rej
patching file 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 (对 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有几次提交涉及到更新哈希函数,这些更新与这个补丁有某种冲突。我还没有检查修改这个补丁的难易程度。

...