It's not exactly a question of Haskell's behaviour. The list [ (a,b) | a <- [0..], b <- [0..] ] is such that apart from pairs starting with zero, no other pair is associated with a finite index. In other words, [ (a,b) | a <- [0..], b <- [0..] ] is not a correct 'enumeration' of all pairs of nonnegative integers. You need to reorder them if you need a finite index associated with every pair.
On Fri, May 16, 2008 at 5:12 PM, leledumbo <[EMAIL PROTECTED]> wrote: > > 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 program 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 it's handled. > > >From my point of view, instead of starting from (1,0), the program starts > from (0,0), which will never finish since the limit of the second element > is > infinite. > -- > View this message in context: > http://www.nabble.com/elem-of-infinite-set-of-tuple-tp17272802p17272802.html > Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com. > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe