Haskell: Eine Liste xs mit jeder Liste in der Liste yss mit Teilanwendungen Zippen und

StackOverflow https://stackoverflow.com/questions/2050109

  •  20-09-2019
  •  | 
  •  

Frage

Hey ich bin Überarbeitung nur für meine funktionale Programmierung Prüfung am Freitag kommen und ich arbeite nur durch unsere Dozierenden Übungen. Ich habe über eine kommt, das ich ein wenig Hilfe Neep auf:

6. a) Schreiben Sie eine Funktion, die eine gegebene Liste xs mit jeder Liste in einer Liste yss von Listen verlieren. verwenden Teil Anwendungen und Lambda-Ausdrücke, um so weit wie möglich Ihre Funktion bei der Definition. b) Schreiben Sie eine Funktion, die jede Liste in einer Liste yss von Listen mit einer bestimmten Liste xs verlieren. verwenden Teil Anwendungen und Lambda-Ausdrücke, um so weit wie möglich Ihre Funktion bei der Definition. Der Unterschied zwischen Ihren Lösungen zu Teil a) und Teil b) dieses Problems zeigt, dass teilweise angewandte Funktionen müssen ihre Argumente in der richtigen Reihenfolge nehmen.

Was ich im Moment für (a) haben, ist:

zipAll = (\ xs (ys: yss) -> [(zip xs ys)] ++ zipAll xs yss)

Es ist nicht-erschöpfend Ich weiß aber könnte jemand mir einige Hinweise?

War es hilfreich?

Lösung 2

Seine feine, arbeitete ich es aus:

zipList :: [a] -> [[b]] -> [[(a,b)]]
zipList = \xs yss -> c xs yss
                        where
                                c xs [] = []
                                c xs (ys:yss) = zip xs ys :zipList xs yss

wünschte, ich hätte nicht dieses jetzt geschrieben: P

Andere Tipps

Es scheint, wie Sie gerade Ihren Basisfall fehlen, um die Funktion der Arbeit zu machen. Der Basisfall wäre

(\xs [ys] -> [(zip xs ys)])

Ich würde wahrscheinlich die Parameter auf die rechte Seite der Gleichung bewegen statt:

zipAll xs (ys:yss) = ...

aber das ist nur auf Frage des Stils.

Die Lösung für einen Teil (b) ist das gleiche, mit der Ausnahme, dass die Reihenfolge der Parameter umgekehrt wird, wie

zipAll (ys:yss) xs = ...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top