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

欢迎!请参阅 关于 页面了解此如何运作的更多信息。

0 投票
Clojure

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

(partition 0 [1 2 3])
(partition 1 -1 [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 定义在引导过程的早期,而 {:pre .. :post ..} 映射直到它们之后才由 defn 读取。
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 报告)
...