haskell-workshop/exercises/block2/2-zip/README.md

34 lines
1.0 KiB
Markdown

# 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
myZip :: [a] -> [b] -> [(a, b)]
```
## Beispiel Testfäle
```
myZip [1,2,3] ['a', 'b', 'c'] -- [(1, 'a'), (2, 'b'), (3, 'c')]
myZip [1,2] ["eins", "zwei", "drei"] -- [(1, "eins"), (2, "zwei")]
myZip [True, False] [1,2,3] -- [(True,1), (False,2)]
myZip [] [1,2,3] -- []
myZip [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
<details>
<summary>Klicke auf den Pfeil für Hinweise</summary>
- 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
</details>