给定一个数字列表,我想创建一个新列表,其中索引i
处的元素是之前所有元素的总和i-1
。
例如 :
[1,4,6,9] -> [1,5,11,20]
我写了以下代码:
fun sum nil = 0
| sum [x]=x
| sum(x::rest)=(x+hd(rest))::sum(rest);
但我得到了这个:
- fun sum nil = 0
= | sum [x]=x
= | sum(x::rest)=(x+hd(rest))::sum(rest);
stdIn:306.16-306.39 Error: operator and operand don't agree [literal]
operator domain: int * int list
operand: int * int
in expression:
x + hd rest :: sum rest
我可以看到递归规则(x+hd(rest))::sum(rest);
是问题的原因,但我该如何解决呢?
问候