2024 年 Clojure 状态调查!分享你的想法。

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

0
Clojure

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

(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报告)
...