请在 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 文本:CLJ-868)的传染性 NaN 的第一个解决方案

0

评论由:alexmiller发表

补丁应该有测试...

0

评论由:nicholasantonov发表

最新补丁增加了对min-key和max-key的测试,包括有和没有NaN结果的测试,因为之前没有。

0

评论由:alexmiller发表

这与CLJ-99重叠,CLJ-99已经被预筛选。我希望将此补丁所需的所有更改基于该票据。为此,请应用CLJ-99补丁,然后分支,进行更改,然后为clj-99分支创建补丁。对此带来的麻烦表示歉意 - 通常补丁不会在这个冲突级别上冲突。

0

评论由:nicholasantonov发表

最新补丁以相同的方式修复了min和max key,但基于CLJ-99,为每个项目只评估一次函数。

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