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

Reply via email to