Using the time library (time-1.5), I have a constant, e.g. 1 second. I don't see a way to create a NominalDiffTime, so I have created a DiffTime:
twoSeconds = secondsToDiffTime 2
Now I'd like to interact with a UTCTime:
now <- getCurrentTime
let twoSecondsAgo = addUTCTime (-twoSeconds) now
Which of course doesn't type check because addUTCTime expects a NominalDiffTime in argument 1 and I have passed a DiffTime. How do I convert between the two types? Or how can I create a NominalDiffTime of 2 seconds?
NominalDiffTime
andDiffTime
both haveRealFrac
instances and thus bothFractional
andReal
instances.You can convert either of them to the other by
Which has type
(Real a, Fractional c) => a -> c
. This is a very common thing to do, and is provided in the standard prelude.DiffTime
andNominalDiffTime
both haveNum
andFractional
instances. This means you can use both integer and floating literals in place of either of them. All of the following work without any additional ceremony.