Durations and Intervals operations
Durations and Intervals operations
Converting Durations
Since all the module types implement the Duration
type class, we can use
convertDuration
to convert from a duration type to another.
convertDuration :: forall a b. Duration a => Duration b => a -> b
The only thing we need to do is pass it one of the duration types (Days, Hours, Minutes, Seconds, Milliseconds ), and then specify an output duration type (or use the result in a context where the compiler can infer the type).
myMinutesDuration :: Minutes
myMinutesDuration = Minutes 60.0
myHoursDuration :: Hours
myHoursDuration = convertDuration myMinutesDuration -- Hours 1.0
-- And so on for the rest...
Negating Durations
It’s possible to negate a duration by using negateDuration:
negateDuration :: forall a. Duration a => a -> a
For example:
myDuration :: Days
myDuration = Days 10.0
myDurationNeg :: Days
myDurationNeg = negateDuration myDuration -- ^ -10 days