Hi

>  The Eq instance you've given violates the law that (x == y) = True
>  implies x = y. Of course the Haskell standard doesn't specify this law,
>  but it should.

Wrong. It shouldn't, it doesn't, and I don't think it even can!

>  The Haskell standard doen't even specify that compare x y = EQ implies
>  (x == y) = True, but again it should (what's the purpose of the Eq
>  constraint on Ord class otherwise).

Correct. Yes, this is one law that _should_ be true, along with others:

a > b && b > c => a > c
a == b => b == a

etc. But a == b => a = b is not a law that needs to hold, and not a
law that can be stated in Haskell, even as a quickcheck property.

Thanks

Neil
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to