
On Mon, Mar 10, 2008 at 3:12 PM, Neil Mitchell
Hi
"The Ord class is used for totally ordered datatypes."
This *requires* that it be absolutely impossible in valid code to distinguish equivalent (in the EQ sense, not the == sense) things via the functions of Ord. The intended interpretation of these functions is clear and can be taken as normative:
forall f . (compare x y == EQ and (f x or f y is defined)) ==> f x == f y)
Are you sure? I would have read this as the ordering must be reflexive, antisymetric and transitive - the standard restrictions on any ordering. See http://en.wikipedia.org/wiki/Total_ordering
This is my reading, too. In addition, to make it total, the property that any two elements are comparable (this is the property that a partial order does not necessarily have). -- Denis