# Aufgabe 1 - Rekursive Implementierung von `zip` ## Ziel der Aufgabe Implementiere die Funktion `zip` rekursiv. Die Funktion nimmt zwei Listen und gibt eine Liste von Paaren zurück, wobei jeweils das erste Element der ersten Liste mit dem ersten Element der zweiten Liste kombiniert wird. ## Signatur ```haskell zip :: [a] -> [b] -> [(a, b)] ``` ## Beispiel Testfäle ``` zip [1,2,3] ['a', 'b', 'c'] -- [(1, 'a'), (2, 'b'), (3, 'c')] zip [1,2] ["eins", "zwei", "drei"] -- [(1, "eins"), (2, "zwei")] zip [True, False] [1,2,3] -- [(True,1), (False,2)] zip [] [1,2,3] -- [] zip [1,2,3] [] -- [] ``` ## Anforderungen - Nutze Rekursion zur Implementierung - Nutze kein zip aus der Standardbibliothek - Die Funktion soll enden, sobald eine der beiden Listen leer ist ## Hinweise - Der Basisfall tritt ein, wenn eine der Listen leer ist - Kombiniere das erste Element beider Listen zu einem Tupel und rufe zip rekursiv für die restlichen Elemente auf