elem of infinite set of tuple
I don't know how Haskell should behave on this. Consider this function:
elemOf (x,y) = (x,y) `elem` [ (a,b) | a <- [0..], b <- [0..] ]
If I try to query elemOf (1,1), the interpreter keeps searching and searching but it never makes it. But if I query elemOf (0,1) (or anything as long as the first element is 0), it can find it easily. I wonder how Hugs handles this.
From my point of view, instead of starting from (1,0), Hugs starts from (0,0), which will never finish since the limit of the second element is infinite.