- class C a => C a where
- toRational :: a -> Rational

- realToField :: (C a, C b) => a -> b

# Documentation

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.RealRing.
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`

class.

Laws that must be satisfied by instances:

fromRational' . toRational === id

toRational :: a -> RationalSource

Lossless conversion from any representation of a rational to `Rational`