Haskell 将NominalDiffTime转换为Real
在的文档中,我看到: 转换函数将其视为秒。它的精度为10^-12秒Haskell 将NominalDiffTime转换为Real,haskell,Haskell,在的文档中,我看到: 转换函数将其视为秒。它的精度为10^-12秒 什么函数将把NominalDiffTime转换为双精度?运气不好您需要更加注意该类型的实例列表。列出的实例之一是Real-NominalDiffTime。这允许您使用realToFrac::(实a,分数b)::a->b转换为Double,因为Double是分数的一个实例 由于NominalDiffTime有一个Real实例,而Double有一个fractive实例,因此您可以使用realToFrac就像它有类型签名Nominal
什么函数将把
NominalDiffTime
转换为双精度
?运气不好您需要更加注意该类型的实例列表。列出的实例之一是Real-NominalDiffTime
。这允许您使用realToFrac::(实a,分数b)::a->b
转换为Double
,因为Double
是分数的一个实例
由于NominalDiffTime
有一个Real
实例,而Double
有一个fractive
实例,因此您可以使用realToFrac
就像它有类型签名NominalDiffTime->Double
一样。当然,realToFrac
更具多态性,因此您可能需要给它一些提示,确切地告诉它您有时想要转换什么类型。但是,如果它能够找出类型,它当然能够进行这种转换。,只需要使签名更通用一点。在这种情况下,您知道这两种类型都近似于实数,所以这就是我要搜索的。诚然,在这种情况下,这需要一些类似的东西:同样合理的(realfoat,realfoat b)=>a->b
查询不会在第二个位置为您提供正确的realToFrac
但总是值得尝试一些更通用的方法来定义您需要的函数。通常,如果某个类型有标准类的实例,那么该模块也不会为导出相同功能的专门版本而费心
realToFrac
尤其是在数字转换方面非常常见的一个笑话,可能仅次于from integral
。(虽然,老实说,我不太喜欢这个函数,因为从数学上来说,“将实数转换为分数”,但哦,好吧…因为time-1.9.1
可以使用fromData.time.Clock
模块:
nominalDiffTimeToSeconds :: NominalDiffTime -> Pico
Get the seconds in a NominalDiffTime.
你能解释一下为什么在这里使用分数型
,以及如何将其转换为双精度
?这可能是基本的东西…fractal
只是一个类型类。不存在“将分数转换为双精度”,因为它们甚至不是同一类东西Double
是一种类型<代码>分数
是类型可以具有的属性。这有点像问你如何让一匹马变成跑步。跑马是马可以做的事情,但跑马并不会停止。@Carl,问一个分数a=>a->Double
类型的函数是否存在,这将是从分数到双精度的转换。不要把它看作是转换实数,而是沿着实数轴转换一些数字。:)但我同意,哈斯克尔的转换并不好。