Donald Bruce Stewart wrote:
> should Rational, or something similar be used instead,
> given that Doubles and Float are broken for a lot of
> basic things (like Eq and Ord), much as we default
> to Integer already.
>
> The issues raised regarding Rational was that you can unexpectedly
> build up large precision, and performance in general, of course.
Well, non-broken Eq and Ord very much depend on large precision.
In a sense, the instances of Eq and Ord for floating point numbers are
wrong. What about rolling new classes for approximate equality and ordering?
class ApproxEq a where
(≈) :: a -> a -> Bool -- almost equal to
class ApproxOrd a where
<< :: a -> a -> Bool -- really less than
>> :: a -> a -> Bool -- really greater than
together with phantom-epsilon
data Eps10
newtype Floating e = F Double
instance ApproxEq (Floating Eps10) where
x ≈ y = abs (x-y) < 1e-10
Regards,
apfelmus
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe