Also habe ich über diese Funktionsdefinition, die eine Liste (xs) nimmt und teilt es in drei Teile als eine Ausgabe.Haskell - Verwenden von Take and Drop, um eine Liste in drei Teile zu teilen
Die Sache ist, ich habe Schwierigkeiten, es zu verstehen. Ich verstehe den ersten Teil, der n der Liste (xs) nimmt, wobei n definiert ist als die Länge der Liste (xs) durch 3 zu teilen. Aber danach bin ich mir nicht sicher, was wirklich los ist.
Wenn mir jemand durch diese Funktion gehen könnte, wäre das großartig. Hier
ist der Code:
--SPLITS A LIST INTO THREE PARTS---------------------------------------------------------
split3 xs = (take n xs , take n (drop n xs) , drop (n*2) xs)
where n = length xs `div` 3
Es tut mir leid ich verstehe immer noch nicht, in Ihrem Beispiel von [1,2,3] Sie fallen 1 aus der Liste zuerst und dann 1 aus dieser Liste. Ich verstehe nicht, wie das funktioniert. Heißt das, dass Sie das Element Nummer 1 aus der Liste oder ein einzelnes Element aus der Liste nehmen? Auch auf der Linie == nimm 1 [2,3] Warum ist das Ergebnis nur 2? –
Auch könnte ich eine detailliertere Erklärung zu dieser sentance haben "Der zweite Teil lässt die ersten n Elemente fallen und nimmt die folgenden n Elemente." Es verwirrt mich wirklich. –
@ GR412 'take 1' ist eine Funktion, die ein Element von der Front übernimmt, nicht das Element' 1'! Betrachte 'nimm 2 ['a', 'b', 'c] == [' a ',' b ']'. Daher bedeutet der Satz einfach, dass das "Take" in diesem Fall in einer Liste aufgerufen wird, die man erhält, wenn man die ursprüngliche Liste nimmt und "n" erste Elemente daraus entfernt. Der verbleibende "Schwanz" hat jedoch 2n Elemente, das zweite 1/3 und das dritte 1/3, so dass man bei n nur den eigentlichen Mittelteil erhält. –