我知道有fromRational
、fromInteger
和fromIntegral
的存在。
但是否有更通用的函数将任何Num
转换为Double
类型?
我也意识到,Num
是一组类型,并且可能会有使用方式上的限制。
但这是可能的吗?
就像这样:
fromNum::(Num a) => a -> Double
最好不要安装任何额外的软件包。
Num
是Complex
的超集,很有意思。
是否存在一种fromReal
函数(类似于fromReal::Real -> Double
)? - Otávio Augusto SilvafromReal = fromRational . toRational
? - amalloyrealToFrac
中。 - David FletcherfromInteger
是Num
类的缺陷。反而,将Num
用于矩阵等事物是错误的运用。矩阵_不是数字_。特别地,它们也没有一个合理的实现方式来进行*
运算——除非你考虑Hadamard积,但那并不是自然乘积,矩阵乘法 才是。但那并没有一个像*
一样的类型,它更像是一个范畴组合类型。相反,矩阵正确的类型类是向量空间。 - leftaroundaboutfromInteger
,而是强制将“可以相加以产生相同类型的事物”与“可以相乘以产生相同类型的事物”以及“可以在源代码中表示为整数字面量的事物”绑定在一起。这三个概念对于其中一个或两个其他概念不合理的类型非常有用。有了后见之明,它们都应该是单独的类(可以选择像 Num
这样的类将它们与超类约束结合在一起)。 - Ben
Num
类的新实例。Num
类是一个开放的类型集合。如果fromNum
库函数面对其创建者完全没有预见的某种类型实例,它会怎么做呢? - jpmarinier