haskell foldl mit (++)

7

Ich habe mit Haskell und ghci gespielt, als ich das gefunden habe, was mich wirklich stört:

%Vor%

Ich habe das erwartet: [3,4,5,2,3,4,2,1,1] Es wird jedoch:

%Vor%

Soweit ich das verstehe, sollte es folgendes sein:

%Vor%

Wenn ich dies in ghci tippe, ist es wirklich [3,4,5,2,3,4,2,1,1] .

Und das andere seltsame Ding ist das:

%Vor%

Ich erwarte, dass sich foldl und foldl1 auf die gleiche Weise verhalten. Was macht eigentlich foldl?

    
Marii 26.02.2011, 18:54
quelle

3 Antworten

19

Die Reihenfolge der Argumente ist falsch. Der richtige ist: %Code% (Das ist zuerst der Akku, dann die Liste.)

    
adamax 26.02.2011, 18:59
quelle
5

Sie haben die Argumente umgestellt. foldl verwendet zuerst den Startwert des Akkumulators und dann die zu faltende Liste. Was in Ihrem Fall passiert, ist, dass foldl die leere Liste überfaltet und somit den Startwert zurückgibt, der [[3,4,5], [2, 3, 4], [2, 1, 1]] ist. Dies wird tun, was Sie wollen:

%Vor%     
sepp2k 26.02.2011 18:59
quelle
2

Sie haben die Argumentreihenfolge falsch

%Vor%

Der Anfangswert kommt zuerst. In Ihrem Fall war Ihr Anfangswert [[3,4,5],[2,3,4],[2,1,1]] und Sie haben die leere Liste überflogen, so dass Sie den Anfangswert zurückbekommen haben.

    
Logan Capaldo 26.02.2011 19:00
quelle

Tags und Links