将NominalDiffTime转换为Real

Cua*_*due 15 haskell

Data.Time.Clock的文档中,我看到:

转换函数会将其视为秒.它的精度为10 ^ -12 s

什么功能会把它NominalDiffTime变成一个Double?没有运气哄骗它

Car*_*arl 15

您需要更加关注该类型的实例列表.其中一个列出的例子是Real NominalDiffTime.这允许您使用realToFrac :: (Real a, Fractional b) :: a -> b转换为Double,因为Double是一个实例Fractional.

既然NominalDiffTime有一个Real实例,并且Double有一个Fractional实例,你可以使用realToFrac它就好像它有类型签名一样NominalDiffTime -> Double.当然,realToFrac比这更具多态性,因此您可能需要准确地给它提示您有时要转换的类型.但它确实能够进行转换,如果它可以找出类型.

  • `Fractional`只是一个类型.没有"将`Fractional`转换为'Double`",因为它们甚至不是同一类.`Double`是一种类型.`Fractional`是一种类型可以拥有的属性.这有点像问你如何将马变成跑步.跑步是马可以做的事情,但它不会成为一匹马. (3认同)
  • @Carl,询问是否存在类型为“分数 a => a -> Double”的函数是完全有意义的,这将是从分数到双精度的转换。 (2认同)