为什么 Haskell prelude 的 atan2 函数在 RealFloat 类中定义?



为什么atan2RealFloat类的一部分,而不是Floating类(名称有点奇怪)的一部分?

我看不出它在逻辑上如何依赖于Real(我认为这是一类不抽象的数字,从某种意义上说,它们可以转换为自己的某种Rational近似值)。

我也不明白为什么它与RealFloat的任何其他成员有关,这些成员与打包和拆包指数/尾数表示有关。

(潜在的亲密选民:我不仅仅是在咆哮哈斯克尔数字塔。我真的认为这个问题有答案,我只是把注意力放错了地方。)

我想这将来自于如何处理复数。atan2函数用于(x, y)坐标,但这不适用于复数值,因为两个复数值表示的信息量与4个实数值相同。atan2对复数来说没有任何意义,但atan确实有意义。由于atan2对于任何处理角度的程序来说都是一个非常重要的函数,它在RealFloat中的位置很可能是由于实用性,而不是纯粹的数学。

最新更新