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键,但在CLJ-99的基础上,每个项目只评估功能一次。

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