为什么 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/