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测试。您是否对这些测试失败进行了调查,以找出原因并修复它们?我在Ubuntu 11.10上使用Oracle JDK 1.6和1.7进行了测试,并发现使用的都是类似失败。

0

评论者:halgari

修复了补丁。测试通过,创建了补丁,将补丁应用到源代码的不同副本,测试仍然通过。所以这个新补丁应该没问题。

0

评论者:jafingerhut

蒂莫西,我不确定你在应用这个补丁时是如何得到成功的结果的。你能尝试以下步骤并看看对你来说会发生什么吗?我使用截至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
patching file src/clj/clojure/core.clj
patching file 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
patching file 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
patching file test/clojure/test_clojure/java_interop.clj

0

评论者:halgari

我就是用git apply。我试了你上面展示的方法,现在我看到了你上面展示的问题。

0

评论者:jafingerhut

Alright,你知道,创建和应用补丁的首选方法是"git format-patch master --stdout > patch.txt"来创建补丁(在完成JIRA工作流程页面描述的分支命令以创建更改分支之后),以及"git am --keep-cr -s < patch.txt"来应用补丁。如果一个补丁是这样创建的,并且用该命令干净地应用,那么你肯定没问题。

"patch -p1 < patch.txt"命令只是有时尝试应用非上述格式生成的补丁或用此方法应用时出现错误的次要方法。

0

评论者:halgari

Alright,你知道,创建和应用补丁的首选方法是"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的标记字面支持)

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 master 上应用顺利,但在2014年1月30日不行。在那周Clojure发生了多个提交,涉及更新哈希函数,这些函数与该补丁在某些方面冲突。我没有检查更新补丁可能有多容易或困难。

...