Closed Mathnerd314 closed 3 years ago
This change broke our program. I blame ourselves for multiplying two TimeSpecs together in the first place (no one was after seconds-squared). But this is a breaking change and probably should have at least made it to the changelog
Well, it is in the changelog, somewhat vaguely, as "TODO: new module System.Clock.Seconds" and following. I think the more pressing issue is that per https://pvp.haskell.org/ the changes should have caused a major version bump, so the release should be 0.9.0.
These instances are based on using the nanosecond as the underlying unit, i.e. the value of a TimeSpec is the integer
s * 1e9 + ns
. Before it was based on representing the rationals + (ns / 1e9)
. But the integer valuation satisfies the ring laws and provides much more intuitive behavior, e.g.Before, this gave 0.
This should properly fix #32, #33. Of course it breaks anyone who was using the old version of
(*)
. The old version of(*)
is equivalent toa * b `div` 1000000000
in the new version.