以下代码是函数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
答案 0 :(得分:1)
sum2
看起来总结了所有偶数的值。 x
是"当前"值(列表的头部),其余为xs
。如果mod x 2 == 0
(偶数),则将x
添加到列表其余部分的总和,否则跳过它并将列表的其余部分相加。
sum2'
根据位置而非价值选择元素。
所以它会丢弃每一个元素,将第一个,第三个,第五个等等相加(索引0,2,4等)。