produkt kartezjański nieskończonych list haskell
Mam funkcję dla skończonych list
> kart :: [a] -> [b] -> [(a,b)]
> kart xs ys = [(x,y) | x <- xs, y <- ys]
ale jak zaimplementować go dla nieskończonych list? Słyszałem coś o Cantorze i teorii mnogości ..?
Znalazłem też taką funkcję
> genFromPair (e1, e2) = [x*e1 + y*e2 | x <- [0..], y <- [0..]]
Ale nie jestem pewien, czy to pomaga, ponieważ uściski dają tylko pary bez przerywania.
Dzięki za pomoc.