On Sep 21, 2013 9:17 AM, "Bob Hutchison" <hutch-li...@recursive.ca> wrote:
> On 2013-09-21, at 4:46 AM, Stijn van Drongelen <rhym...@gmail.com> wrote:
>> I do have to agree with Damodar Kulkarni that different laws imply
different classes. However, this will break **a lot** of existing software.
> You could argue that the existing software is already broken.

I'd argue that it's not all broken, and you're breaking it all.

>> If we would do this, only Eq and Ord need to be duplicated, as they
cause most of the problems. Qualified imports should suffice to
differentiate between the two.
>>     import qualified Data.Eq.Approximate as A
>>     import qualified Data.Ord.Approximate as A
>>
>>     main = print $ 3.16227766016837956 A.== 3.16227766016837955
> As soon as you start doing computations with fp numbers things get much
worse.

Exactly. The Eq and Ord instances aren't what's broken, at least when
you're dealing with numbers (NaNs are another story). That there are pairs
of non-zero numbers that when added result in one of the two numbers is
broken. That addition isn't associative is broken. That expressions don't
obey the substitution principle is broken. But you can't tell these things
are broken until you start comparing values. Eq and Ord are just the
messengers.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to