我知道fromRational
,fromInteger
和fromIntegral
的存在。
但是是否有更通用的函数将任何Num
转换为Double
类型?
我也意识到Num
是一组类型,这可能伴随着如何使用它的限制。
但这是可能的?
类似于:
fromNum::(Num a) => a -> Double
最好不要安装任何额外的软件包。
绝对没有办法做到这一点,而且有一个很好的理由。Num
是一个通用类型,设计用于任何模糊的"可添加"类型。和";multiply-able"。你可以非常宽松地把它想象成一个环[1]。这意味着像向量、点和矩阵这样的东西都是Num
。没有合理的、规范的方法将Matrix a
转换成Double
。
您已经注意到,有几种方法可以从更具体的类型类(如Integral
)获得Double
。
[1]是的,fromInteger
也在Num
上。这在很大程度上被认为是一个错误的特性,使用矩阵的库通常只提供一个尴尬的默认实现。