# 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