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

欢迎!有关如何工作的更多信息,请参阅关于页面。

0
Clojure

min-key和max-key的行为似乎不正确(遵循Java和IEEE浮点数约定)

(apply max-key last [[:a 10000] [:b (/ 0. 0)] [:c 0]]) [:c 0]

不知道这应该如何传播,但绝对不是静默传播。选择

  1. (链接::b NaN)(第一个生成NaN的项目)
  2. NaN(这正在更改预期的类型)
  3. ArithmeticException 具有至少一个NaN操作数的操作。

如果像min/max一样修复(http://dev.clojure.org/jira/browse/CLJ-868)它可能会得到选项1。

6 答案

0

由nicholasantonov发表评论

这以与(http://dev.clojure.org/jira/browse/CLJ-868)相同的方式实现了传染性NaN的第一个解决方案

0

由alexmiller发表评论

修复应该包含测试...

0

由nicholasantonov发表评论

这个最新的补丁增加了对 min-key 和 max-key 进行测试,以检查在存在 NaN 结果以及不存在 NaN 结果两种情况下的行为,因为之前并没有这样的测试。

0

由alexmiller发表评论

这会与 CLJ-99 相冲突,该问题已经被预审过。我希望在这个补丁要求的任何更改都基于那个条目之上。为此,请先应用 CLJ-99 补丁,然后分支,进行更改,然后相对于 clj-99 分支创建补丁。很抱歉这比较麻烦 - 通常补丁在冲突的这一层面并不常见。

0

由nicholasantonov发表评论

最新的补丁以与 min 和 max key 相同的方式修复问题,但基于 CLJ-99,仅对每个项评估一次函数。

0
参考:[https://clojure.atlassian.net/browse/CLJ-1911](https://clojure.atlassian.net/browse/CLJ-1911)(由 reborg 报告)
...