
On 7/03/2011, at 5:38 PM, Karthick Gururaj wrote:
Defn 1. Given four arbitrary a, b, c and d on a set X which is an instance of Ord (so a = b, a > b and a < b are defined), let: (a, b) > (c, d) iff a > c (GT) (a, b) < (c, d) iff a < c (LT) (a, b) = (c, d) iff a = c. (EQ) (please note that I'm redefining the EQ for pairs as well).
Yes, I noted that. I'm painfully familiar with that ordering from Smalltalk. (See LookupKey and Association.)
Of course, the definition of EQ here is not what would be considered "reasonable".
Exactly so.
I also see now, as I'm typing this, if we define EQ to be the way it is in Haskell (which IS the reasonable way), then none of my definitions of GT/LT will hold.
The confusion started for me as I thought of n-tuples as vectors in n-dimensional space, on which one doesn't usually define GT and LT operators. Now I see some light :) n Well, in n-dimensional space you are usually dealing with X for some
I may not have made it sufficiently clear when I mentioned Eq that I meant "the definitions of Eq for tuples that come standard with Haskell". base set X. With a tuple (T1,...,Tn) the types T1,...,Tn are often completely different. For what it's worth, you _can_ define < on n-dimensional spaces, and lexicographic order is a popular way to do it. You can even put a total order on polynomials in a finite number of variables, provided the coefficients come from an ordered set.