www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

Skater203

Gepostet:
15.11.2009 16:10

Prelude Funktion Zip  
Hey @ all

Definieren Sie eine Funktion zip3, die - analog zu zip - korrespondierende Elemente dreier Listen zu Tripeln verknüpft:

durch eine geeignete Kombination von zip, zipWith und einer anonymen Funktion (zip3'').

sowohl zip also auch zipWith sind doch Funktionen, die für die Eingabe von 2 Listen bestimmt sind.. wie soll ich denn damit zip3 definieren ??
Habe ich gar keine Idee zu

genau das gleiche zu

Definieren Sie zipWith3 durch eine geeignete Kombination von zip, zipWith und einer anonymen Funktion (zipWith3').

Einer von euch ne Idee ?
Zum Seitenanfang    
 
Luks

Gepostet:
15.11.2009 18:30

   
ich habs probiert, aber irgendwie stimmt was nicht...


zip3 :: [a] -> -> [c] -> [(a,b,c)]
zip3 [] _ _ = []
zip3 _ [] _ = []
zip3 _ _ [] = []
zip3 (x:xs) (y:ys) (z:zs) = (x,y,z) : (zip3 xs ys zs)

zipWith3 f (x:xs) (y:ys) (z:zs) = f x y z : (zipWith f xs ys zs)
zipWith3 f _ _ _ = []
Zum Seitenanfang    
 
Luks

Gepostet:
15.11.2009 18:31

   
eigetnlich steht inner ersten zeile noch nen aber das zeigt er irgendwie hier nicht an
Zum Seitenanfang    
 
Luks

Gepostet:
15.11.2009 18:35

   
so scheints zu funktionieren.

zip3' :: [a] -> -> [c] -> [(a,b,c)]
zip3' [] _ _ = []
zip3' _ [] _ = []
zip3' _ _ [] = []
zip3' (x:xs) (y:ys) (z:zs) = (x,y,z) : (zip3' xs ys zs)
Zum Seitenanfang    
 
Skater203

Gepostet:
15.11.2009 19:33

   
Das ist ja nur zip3 Rekursiv.. das habe ich schon...
aber zip3 mit zip und zipwith .. darzustellen, das ist mein Problem.. und das fehlt bei dir auch noch
Zum Seitenanfang    
 
Siracusa

Gepostet:
16.11.2009 01:44

   
Hallo ihr beiden,

(zip3 xs ys zs) erhält drei Listen. Da könntet ihr xs und ys erstmal mit zip zu einer neuen Liste verknüpfen, die Paare (x,y) enthält. Dann bleiben wieder zwei Listen übrig, eine die Paare enthält und die Ausgangsliste zs. Aus den beiden soll nun eine Liste mit Tripeln entstehen. Für diese Umformung bietet sich zipWith mit einer anonymen Funktion als Parameter an.

zipWith3 funktioniert dann nach dem selben Prinzip, nur dass noch eine Funktion f mit als Parameter übergeben wird, welche dann in die anonyme Funktion eingearbeitet werden muss.


Viele Grüße,

Siracusa
Zum Seitenanfang