
* Paul Keir
Hi all,
GHC is not happy with this:
f = [] == []
nor this:
f' = ([]::(Eq a) => [a]) == ([]::(Eq a) => [a])
Here, there's no guarantee that the answer will be the same independent of what 'a' you choose. Potentially, you could define different instances [Int] and [Bool] for Eq, so that [] == [] = True for [Int] but [] == [] = False for [Bool]. Actually, instance Eq [a] is defined parametrically on 'a', which implies that equality of lists depends only on equality of underlying types, therefore [] == [] should be constant, but compiler doesn't use this information. If you just want to test a list for emptyness, use 'null'. -- Roman I. Cheplyaka :: http://ro-che.info/ "Don't let school get in the way of your education." - Mark Twain