<div dir="auto">The Real class has one method:<div dir="auto"><br></div><div dir="auto">-- | the rational equivalent of its real argument with full precision</div><div dir="auto"><br></div><div dir="auto">toRational :: a -> Rational</div><div dir="auto"><br></div><div dir="auto">This is ... pretty weird. What does "full precision" mean? For integral and floating point types, it's fine. It's not at all meaningful for</div><div dir="auto"><br></div><div dir="auto">1. Computable reals</div><div dir="auto">2. Real algebraic numbers</div><div dir="auto">3. Real numbers expressible in radicals</div><div dir="auto">4. Rational numbers augmented with some extra numbers like pi</div><div dir="auto">5. Geometrically constructable reals</div><div dir="auto">6. Etc.</div><div dir="auto"><br></div><div dir="auto">Can we settle on a meaning for toRational?</div><div dir="auto"><br></div><div dir="auto">The properFraction method of the RealFrac class has basically the same issue.</div></div>