haskell中的partialSum

Ali*_*ice 1 haskell functional-programming

我需要计算haskell中列表的部分和.我怎么能这样做?

如果我有

partialSum (1:3:5:[]) => (1:4:9:[])
partialSum [] => []
partialSum (from 1) => 1:3:6:10:...
Run Code Online (Sandbox Code Playgroud)

oba*_*adz 7

partialSum :: Num a => [a] -> [a]
partialSum = drop 1 . scanl (+) 0

?> take 10 $ partialSum [1..]
[1,3,6,10,15,21,28,36,45,55]
Run Code Online (Sandbox Code Playgroud)

编辑: OP要求的版本没有scanl:

partialSum :: Num a => [a] -> [a]
partialSum (x:xs) = x : map (+ x) (partialSum xs)
partialSum []     = []
Run Code Online (Sandbox Code Playgroud)

  • 你不需要`drop`,使用`scanl1(+)`. (7认同)