2024 Clojure 状况调查中分享您的想法!

欢迎!请参阅关于页面以了解此系统的更多信息。

0
Clojure

如果您把非正数的 'n' 或 'step' 传递给 partition,将得到一个无限循环。以下是一些例子

(partition 0 (list 1 2 3))
(partition 1 -1 (list 1 2 3))

原因: partition 和 partition-all 没有检查 n 和 step 是否为正数。

方法: 为 partition 和 partition-all 增加检查 n 和 step 是否为正数的功能。

补丁: clj-1647_3.patch

审查人员: Alex Miller

29 个答案

0

评论者:alexmiller

加油

0

评论者:alexmiller

加油

0

评论者:alexmiller

加油

0

评论者:alexmiller

加油

0

评论者:alexmiller

抱歉,浏览器失败 :)

0

评论人:kworam

谢谢提出来,Matthew,我很感激!

0

评论人:kworam

谢谢提出来,Matthew,我很感激!

0
_评论人:alex+import_

新补丁:clj-1647.patch

包含测试,更少的空白更改,手动抛出了IAEs。我很快会做一些基本的基准测试,尽管我预计开销会相当低,因为我们只检查了一次参数。

Kevin,你的补丁之所以可以使partition-all工作但不能使partition工作,是因为partition在引导过程中定义得相当早,而defn在稍后增强之前不会读取{:pre .. :post ..}映射。
0

评论人:kworam

感谢解决那个谜题,Matthew!

0

评论者:alexmiller

补丁看起来基本上是好的。一些小改动

  • internal-partition和internal-partition-all应该用{{defn-}}标记为私有的。
  • 提交描述应以"CLJ-1647"开始
0

评论人:mjg123

我添加了clj-1647_2.patch以代替此问题上的其他补丁。在提交消息中添加了Jira引用,并在可能的地方使用了 defn- (defn-在定义私有函数之后才会定义,但已经手动添加了^:private元数据)

0

评论者:alexmiller

补丁更改将add-annotation从defn-更改为defn,但这似乎与补丁的意图无关?

0

评论人:mjg123

Alex,谢谢你这么快就回复了 - 关于add-annotation的错误,我表示歉意。请参阅clj-1647_3.patch。

0
参考:https://clojure.atlassian.net/browse/CLJ-1647(由kworam报告)
...