在Haskell中将Num转换为Double



我知道fromRational,fromIntegerfromIntegral的存在。
但是是否有更通用的函数将任何Num转换为Double类型?
我也意识到Num是一组类型,这可能伴随着如何使用它的限制。
但这是可能的?
类似于:

fromNum::(Num a) => a -> Double

最好不要安装任何额外的软件包。

绝对没有办法做到这一点,而且有一个很好的理由。Num是一个通用类型,设计用于任何模糊的"可添加"类型。和";multiply-able"。你可以非常宽松地把它想象成一个环[1]。这意味着像向量、点和矩阵这样的东西都是Num。没有合理的、规范的方法将Matrix a转换成Double

您已经注意到,有几种方法可以从更具体的类型类(如Integral)获得Double


[1]是的,fromInteger也在Num上。这在很大程度上被认为是一个错误的特性,使用矩阵的库通常只提供一个尴尬的默认实现。

相关内容

  • 没有找到相关文章

最新更新