Haskell: Zwei Listen in eine Liste von Tupeln

Ich versuche, eine (unten beschriebene) Funktion zu implementieren, die zwei Listen benötigt (jede oder beide können unendlich sein) und eine Liste von Tupeln aller möglichen Elementpaare zwischen den Listen zurückgibt

zipInf :: [a] -> [b] -> [(a,b)]

(z. B. sollte die Ausgabe so sein, muss aber nicht genau so sein.)

zipInf [0 .. 2] ['A' .. 'C'] ~> [(0,'A'),(1,'A'),(0,'B'),(1,'B'),(0,'C'),(2,'A'),(2,'B'),(1,'C'),(2,'C')]

zipInf [] [0 ..] ~> []

zipInf [0 ..] [] ~> []

take 9 (zipInf ['A'] [0 .. ]) ~> [('A',0),('A',1),('A',2),('A',3),('A',4),('A',5),('A',6),('A',7),('A',8)]

Ich habe damit begonnen, es so zu implementieren:

zipInf :: [a] -> [b] -> [(a,b)]
zipInf [] _ = []
zipInf _ [] = []
zipInf

Ich wollte die Liste in eine Hilfsfunktion einspeisen, um die Listen zu erstellen, aber die Liste, die ich erstellt habe, kann nicht kompiliert werden und weiß nicht, wie ich mit unendlichen Listen umgehen soll

Hilfsfunktion-

oneList :: [a] -> [b] [(a,b)]
oneList [] _ = []
oneList x:xs y:ys = [(x,y)] ++ oneList

Antworten auf die Frage(5)

Ihre Antwort auf die Frage