Haskell函数列表(查找索引并添加它们)〜代码说明

时间:2017-06-12 15:43:43

标签: haskell

以下代码是函数sum2,作为 参数采用数字列表并返回偶数元素的总和 索引。谁能解释一下这段代码的工作原理什么是x和Xs,它如何找到偶数并添加它们?

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

所以如果你在控制台sum2 [2,3,3,4,0,6]中点击它只会添加偶数,结果将是:12

1 个答案:

答案 0 :(得分:1)

sum2看起来总结了所有偶数的x是"当前"值(列表的头部),其余为xs。如果mod x 2 == 0(偶数),则将x添加到列表其余部分的总和,否则跳过它并将列表的其余部分相加。

sum2'根据位置而非价值选择元素。

  1. 最后一种情况,如果列表中有至少两个元素,则跳过第二个元素并将第一个元素添加到其余元素的总和中。
  2. 如果恰好有一个,那就是总和。
  3. 如果,则总和为0.
  4. 所以它会丢弃每一个元素,将第一个,第三个,第五个等等相加(索引0,2,4等)。