Ratio package:rebase

Rational numbers, with numerator and denominator of some Integral type. Note that Ratio's instances inherit the deficiencies from the type parameter's. For example, Ratio Natural's Num instance has similar problems to Natural's.
Arbitrary-precision rational numbers, represented as a ratio of two Integer values. A rational number may be constructed using the % operator.
Add months (clipped to last day), then add days
Add months (rolling over to next month), then add days
approxRational, applied to two real fractional numbers x and epsilon, returns the simplest rational number within epsilon of x. A rational number y is said to be simpler than another y' if Any real interval contains a unique simplest rational; in particular, note that 0/1 is the simplest rational of all.
Calendrical difference, with as many whole months as possible
Calendrical difference, with as many whole months as possible. Same as diffGregorianDurationClip for positive durations.
Conversion from a Rational (that is Ratio Integer). A floating literal stands for an application of fromRational to a value of type Rational, so such literals have type (Fractional a) => a.
I/O error where the operation is not possible.
An error indicating that an IO operation failed because the operation was not possible. Any computation which returns an IO result may fail with isIllegalOperation. In some cases, an implementation will not be able to distinguish between the possible error causes. In this case it should fail with isIllegalOperation.
I/O error where the operation is not possible.
the rational equivalent of its real argument with full precision