produto cartesiano de listas infinitas haskell
Eu tenho uma função para listas finitas
> kart :: [a] -> [b] -> [(a,b)]
> kart xs ys = [(x,y) | x <- xs, y <- ys]
mas como implementá-lo para listas infinitas? Eu ouvi algo sobre Cantor e teoria dos conjuntos ..?
Eu também encontrei uma função como
> genFromPair (e1, e2) = [x*e1 + y*e2 | x <- [0..], y <- [0..]]
Mas não tenho certeza se isso ajuda, porque abraços só dão pares sem interromper.
Obrigado por ajuda.