
On Wed, Oct 2, 2013 at 3:49 PM, Niklas Haas
On Wed, 2 Oct 2013 15:46:42 +0200, Stijn van Drongelen
wrote: I do think something has to be done to have an Eq and Ord with more strict laws.
* Operators in Eq and Ord diverge iff any of their parameters are bottom. * The default definitions of (/=), (<), (>) and `compare` are law. * (==) is reflexive and transitive * (<=) is antisymmetric ((x <= y && y <= x) `implies` (x == y)) * (<=) is 'total' (x <= y || y <= x) * (<=) is transitive
Currently, reflexivity of (==) is broken in the Prelude (let x = 0/0 in x == x). I know this is for IEEE 754 compliance, but c'mon, this is Haskell, we can have better ways of dealing with NaNs.
Like making Double not be an instance of Eq? _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Like making IEEE754 Doubles not an instance of Eq. Normal and denormal Doubles should have Eq instances.