我有一个清单[1,2,3,4]。我的函数应该返回[1,3,6,10]。这就是我到目前为止所拥有的。我试图创建一个辅助方法来获取值并将其保存到列表并添加它。但它似乎没有用。
summed = []
help x = (x + summed x) : summed
summing [] = []
summing (x:xs) = help x : summing xs
答案 0 :(得分:3)
不是一个完整的答案,因为这听起来像是家庭作业。但有几种方法。
你走在正确的轨道上。如果要编写具有两个参数的函数:到目前为止的总和,以及输入列表。如果您将列表的tail
传递给下一次迭代,则要添加到累积总和的数字将是您传入的列表的头部。
您还可以查看Data.List
中的高阶函数,以获取函数(+)
的参数,初始值和列表,并返回函数的重复应用程序列表的每个元素,然后返回结果列表,而不仅仅是最终结果。你正在做的是一个需要学习的重要模式。
答案 1 :(得分:1)
scanl (+) 0 yourList
应该这样做。您可以通过查看GHC的标准库文档和资源来了解它的实现方式和原因。 https://downloads.haskell.org/~ghc/latest/docs/html/libraries/base-4.10.0.0/Prelude.html#v:scanl