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

欢迎!请参阅 关于 页面了解有关此功能的一些更多信息。

0 投票
Java 交互

user=> (quot Long/MIN_VALUE -1) -9223372036854775808

类似于 CLJ-1222 和 CLJ-1253 的问题,其根本原因与 CLJ-1225 中描述的相同。由于在此情况下所需的修复可能相当不同,因此从 CLJ-1253 独立提交了票证。

Rich Hickey 在 CLJ-1225 的评论中指出,此情况应抛出异常。

问题:对于 inc(在给定输入 Long/MAX_VALUE 时抛出异常),存在自动提升的 inc' 和未检查的 unchecked-inc。quot 现在在这种情况抛出异常。应该有自动提升的 quot' 和未检查的 unchecked-quot 吗?

5 答案

0 投票

评论者:jafingerhut

Patch clj-1254-v1.txt 导致当参数都是 long 时,(quot Long/MIN_VALUE -1) 抛出异常,因为结果越界。

与具有自动提升版本 inc' 和未检查版本 unchecked-inc 的 inc 不同,没有自动提升的 quot' 和未检查的 unchecked-quot。此补丁没有添加一个。

应该添加 quot' 和 unchecked-quot 吗?如果是这样,是此票证还是单独的一个?

0 投票

评论者:jafingerhut

补丁 clj-1254-2.diff 与 clj-1254-v1.txt 相同,但将其干净地应用到最新的 master。唯一的更改是在更改的行上下文中,这是由于最近的提交所致。

0 投票
by

评论者:alexmiller

quot 应在溢出时抛出异常
quot'(我假设不是 divide' ?)应在溢出时自动提升
unchecked-divide 应添加以执行 quot 现有的功能 - 见 CLJ-1545

0 投票
by
参考: https://clojure.atlassian.net/browse/CLJ-1254(由 jafingerhut 报告)
...