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和不带NaN结果的测试,因为之前没有。

0
已回答 by

评论者:alexmiller

这与CLJ-99有关联,CLJ-99 已被预先筛选。我希望在这个基础上对任何这个问题补丁需要做的改变都进行操作。为了构建这个,应用 CLJ-99 补丁,然后分支,进行您的更改,然后相对于 clj-99 分支创建补丁。抱歉这是个麻烦 - 通常在此冲突级别上并不冲突。

0
by

评论者:nicholasantonov

最新的补丁以相同的方式修复了 min 和 max 键,但在 CLJ-99 上进行,为每个项目仅评估一次函数。

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