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

评论由: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 失败,位置在第32行。
1个补丁中1个失败 -- 保存拒绝修改到文件 src/jvm/clojure/lang/PersistentQueue.java.rej
正在修补文件 test/clojure/test_clojure/data_structures.clj
Hunk #1 成功,位置在第123行,DU模糊2。
Hunk #2 成功,位置在第861行,DU模糊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 发布的评论:

我们不在其他地方使用队列*约定,例如 vec 和 vector。我认为队列应该接受类似于 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 的建议是 straightforward。如果没有人想现在接受这个任务,我将提出帮助。

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 提出

patch clj-1048-queue-takes-collections.diff 在2014年1月23日的最新Clojure master版本中应用无误,但在2014年1月30日则不行。该周有几个提交到Clojure的更改,涉及到更新哈希函数,与这个补丁在某些方面冲突。我没有检查更新补丁可能有多难或多简单。

...