0

可能重复:
标准 ML 中的部分总和?

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

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

 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]);  
4

2 回答 2

1

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

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

于 2013-01-19T01:53:44.187 回答
1

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

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

 fun psum lst = psum2 lst 0
于 2013-01-18T20:37:48.360 回答