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. 算术异常与至少一个 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 结果和不带 NaN 结果的测试,因为之前没有这些测试。

0

评论者:alexmiller

这与CLJ-99重叠,该issue已经预先筛选。我想要以那个ticket为基础对这次补丁需要的任何改动进行操作。要构建这个,先应用CLJ-99补丁,然后分支,进行更改,然后再创建相对于clj-99分支的补丁。对此造成的麻烦感到抱歉 - 通常在这个冲突级别,补丁不会相互冲突。

0

评论者:nicholasantonov

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

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