Der folgende Code ist eine Funktion sum2, die als Argument eine Liste von Zahlen und gibt die Summe der Elemente der sogar Indizes. Kann mir jemand erklären, wie dieser Code funktioniert? Was sind X und Xs und wie finden sie die geraden Zahlen und fügen sie hinzu?Haskell Funktionsliste (finden Sie gerade Indizes und fügen Sie sie hinzu) ~ Code Erklärung
sum2 :: [Integer] -> Integer
sum2 [] = 0
sum2 (x:xs) | mod x 2 == 0 = x + sum2 xs
| otherwise = sum2 xs
sum2' :: [Integer] -> Integer
sum2' [] = 0
sum2' [x] = x
sum2' (x:_:xs) = x + sum2' xs
so, wenn Sie in der Konsole getroffen SUM2 [2,3,3,4,0,6] es nur die geraden Zahlen hinzufügen und das Ergebnis sein wird: 12
Ich habe Ihren ersten Punkt nicht verstanden, warum sollten wir den zweiten überspringen und den ersten hinzufügen? – csandreas1
@ csandreas1 Es ist in der Regel zwei Elemente der Liste auf einmal zu knacken und eines von ihnen zu behalten. Wenn Sie die geradzahligen indizierten wollen, behalten Sie die erste, und wenn Sie ungerade indiziert werden wollen, nehmen Sie die zweite (und der Einzelelementfall ignoriert auch das Element). Das "_" bedeutet grundsätzlich, dieses Element zu ignorieren - da wir es nicht benennen, können wir es nicht verwenden. – ryachza