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

欢迎!请查看 关于 页面以了解该功能的更多信息。

0
Clojure

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

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

不清楚这将如何传播,但绝对不是静默的。选项

  1. (链接: :b NaN)(生成 NaN 的第一个项)
  2. NaN(这改变了期望的类型)
  3. 算术异常 与至少一个 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 制作

这个最新的补丁添加了对带NaN和不带NaN结果的min-key和max-key的测试,因为之前没有这些测试。

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