Simeon Mattes simeon.mattes at gmail.com
Mon Mar 31 02:10:07 EDT 2008

```
>
> 2008/3/30, Bulat Ziganshin <bulat.ziganshin at gmail.com>:
>>  although the last alternative,
>>    (Branch l r) <= (Branch l' r')  =  l == l' && r <= r' || l <= l'
>> seems suspicious to me. isn't it the same as
>>    (Branch l r) <= (Branch l' r')  =  l <= l'
>
> Yes, it should be :
> (Branch l r) <= (Branch l' r')  =  l < l' || l == l' && r <= r'
>
> Lexical order for a tuple (a,b) is :
> (a,b) <= (a',b') iff (a < a' or (a == a' and b <= b'))
> The same idea can be applied to list (where Nil is strictly less than
> anything else) or other datatypes.
>
> --
> Jedaï
> _______________________________________________
>
>

>
> 2008/3/30, Bulat Ziganshin <bulat.ziganshin at gmail.com>:
>>  although the last alternative,
>>    (Branch l r) <= (Branch l' r')  =  l == l' && r <= r' || l <= l'
>> seems suspicious to me. isn't it the same as
>>    (Branch l r) <= (Branch l' r')  =  l <= l'
>
> Yes, it should be :
> (Branch l r) <= (Branch l' r')  =  l < l' || l == l' && r <= r'
>
> Lexical order for a tuple (a,b) is :
> (a,b) <= (a',b') iff (a < a' or (a == a' and b <= b'))
> The same idea can be applied to list (where Nil is strictly less than
> anything else) or other datatypes.
>
> --
> Jedaï
> _______________________________________________
>
>
Quoted from:
http://www.nabble.com/lexicographic-order-tp16381434p16388762.html

Thanks for your help...I feel so embarrassed. With all of these symbolos in
Haskell like -> (for types), => (in classes) etc I couldn't imagine that <=
means less than or equal to!!!:clap:

>Yes, it should be :
>(Branch l r) <= (Branch l' r')  =  l < l' || l == l' && r <= r'

>Lexical order for a tuple (a,b) is :
>(a,b) <= (a',b') iff (a < a' or (a == a' and b <= b'))

I have tested it and I have found that it is the same with
(Branch l r) <= (Branch l' r')  =  (l == l' && r <= r') || l < l'

The problem with the previous is that the compiler during the parsing takes
as right
(Branch l r) <= (Branch l' r')  =  l == l' && (r <= r') || l < l')
since the infix operator && needs two operands,i.e. one on the left and the
other on the right

Though I can't understand why both
(Branch l r) <= (Branch l' r')  =  l < l' || l == l' && r <= r'
(Branch l r) <= (Branch l' r')  =  l <= l' || l == l' && r <= r'

give the same results and why I should take as right
(a,b) <= (a',b') iff (a < a' or (a == a' and b <= b'))
and not
(a,b) <= (a',b') iff (a <= a' or (a == a' and b <= b'))

The latter seems more logical, doesn't it?

--
View this message in context: http://www.nabble.com/lexicographic-order-tp16381434p16392557.html