Haskell: Map-Funktion auf eine Liste von Listen

7

Wie ordnen Sie eine Funktion zum Bearbeiten von Listen in einer Liste zu? Das Folgende ist genau das, was ich als Beispiel versuche, aber ich wollte nur eine allgemeine Frage stellen. Vielen Dank im Voraus!

Im Moment versuche ich, eine Funktion auf jeder Liste einer Liste (von itrCol xs zurückgegeben) zu ändern.

%Vor%

Dabei gibt itrCol eine Liste von Listen zurück, wobei jede Liste eine Spalte ist.

%Vor%

getCol listet die Spaltenliste der Spaltenindizes auf

%Vor%

und ändern ist:

%Vor%     
user1670032 06.10.2012, 19:04
quelle

4 Antworten

6

Könnte nur currying und einen anderen Aufruf zum Zuordnen verwenden.

%Vor%

Um mehr über Currying zu erfahren, werfen Sie einen Blick auf das Kapitel in Learn You A Haskell , ein großartiges Beispiel Anfängerbuch in Haskell.

    
Johanna Larsson 06.10.2012, 19:10
quelle
11

Sieh dir das an!

%Vor%

usw.

    
luqui 06.10.2012 19:31
quelle
2

map (und fmap wichtiger) hebt im Grunde eine Funktion auf, um auf Listen zu arbeiten, und gibt Ihnen eine neue Funktion: (Ich habe überflüssige Parens hinzugefügt, um es klarer zu machen)

%Vor%

Wenn Sie diese zweite Funktion ([a] -> [b]) zuordnen, erhalten Sie eine Funktion, die auf Listen von Listen funktioniert:

%Vor%

(Wenn dies nicht das ist, was Sie wollten, dann erklären Sie bitte)

    
Pubby 06.10.2012 19:10
quelle
1

Die Typensignatur von map ist:

%Vor%

Eine sinnvolle Signatur für change ist:

%Vor%

Jetzt erwartet map eine Funktion von a bis b als erstes Argument. Wenn wir change angeben, eine Funktion von [Integer] bis [Integer] , dann a = [Integer] und b = [Integer] .

%Vor%

Wenn nun das von iterCol xs erzeugte Listenverständnis [[Integer]] liefert, dann können wir das auf map change anwenden:

%Vor%

Das sieht alles gut für mich aus. Es funktioniert, weil map polymorph ist. Wenn Sie ihm eine Funktion geben, die A in B umwandelt, gibt es Ihnen eine Funktion zurück, die Listen von A in Listen von B verwandelt. Es ist egal, was A und B sind: Wie Sie hier sehen können, können sie sogar selbst Listen sein!

    
Dan Burton 06.10.2012 22:44
quelle

Tags und Links