haskell - Haskell中使用NaN的最大值和最小值

标签 haskell

为什么 NaN 和数字的最大值是 NaN,而 NaN 和数字的最小值是数字?这似乎与我尝试过的其他几种语言不一致:

在 haskell :

max (0/0) 1 -- NaN
min (0/0) 1 -- 1.0

在 Python 中
>>> max(float("nan"),1) #nan
>>> min(float("nan"),1) #nan

在 JavaScript 中
> Math.max(0/0,1) //NaN
> Math.min(0/0,1) //NaN

最佳答案

Haskell 报告指定 (min x y, max x y)将返回 (x, y)(y, x) .这是一个很好的属性,但很难与 NaN 的对称处理相协调。

还值得一提的是,这与 SSE2 指令 MINSD 的不对称性完全相同。和 MAXSD展示,即 Haskell min (对于 Double )可以通过 MINSD 实现和 max通过 MAXSD .

关于haskell - Haskell中使用NaN的最大值和最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25375294/

相关文章:

haskell - 学习 haskell : Making a function that returns a list of elements that only appear once

haskell - 从 GHC 8.10 升级到 9.2 - "Instance head cannot contain nested ‘forall’ s 或上下文”

haskell - Haskell 类型系统中的 `Num a => a` 是什么意思?

algorithm - 我如何在 haskell 中实现归纳图?

haskell - Haskell RNG 和状态

haskell - 为什么我不能将查找结果与 Haskell 中的 Nothing 进行比较?

haskell - 针对 unsafePerformIO 的部门限制

plugins - Leksah 有 hlint、hoogle 集成吗?

haskell - 需要一个类型,但有种类 ‘* -> Constraint’

haskell - 如何指定调用函数的实例