函数式编程中的部分和(递归)

时间:2013-01-17 23:09:04

标签: list recursion functional-programming ml

  

可能重复:
  Partial sum in Standard ML?

我是函数式编程的新手,我有一个用于计算列表的部分和的赋值。例如。 - psum [1,1,1,1,1]; val it = [1,2,3,4,5]:int list

到目前为止,这是我的代码。但是我的函数只是按原样返回列表。

 fun ppsum2([])=[]
| ppsum2(x::L) = x::ppsum2(L);


 exception Empty_List;

fun psum(L) : int list = 
if L=nil then raise Empty_List
else psum2(L);


psum([2,3,4]);  

2 个答案:

答案 0 :(得分:1)

由于这看起来像家庭作业,我希望这很简单:

 fun psum2 [] total = []  
   | psum2 (h::t) total = (total+h) :: psum2 t (total+h)

 fun psum lst = psum2 lst 0

答案 1 :(得分:1)

您可以查找Haskells scanl1函数的源代码,并将其转换为ML。

这样,你不会学习函数式编程,而是学习媒体能力。