This class allows lossless conversion
from any representation of a rational to the fixed Rational type.
"Lossless" means - don't do any rounding.
For rounding see Algebra.RealField.
With the instances for Float and Double
we acknowledge that these types actually represent rationals
rather than (approximated) real numbers.
However, this contradicts to the Algebra.Transcendental
Laws that must be satisfied by instances:
fromRational' . toRational === id