[Haskell-cafe] Any precedent or plan for guaranteed-safe Eq and Ord instances?

Stijn van Drongelen rhymoid
Wed Oct 2 13:46:42 UTC 2013


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.

-Stijn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20131002/0d626296/attachment.htm>



More information about the Haskell-Cafe mailing list