我为累积总和实现了以下功能:
fun cumsum_reverse (xs: int list) =
if null xs then [0]
else
let val tl_cumsum = cumsum_reverse (tl xs)
in
hd xs + hd tl_cumsum :: tl_cumsum
end
fun reverse (first: int list, second: int list) =
if null first
then
second
else
reverse (tl first, hd first :: second)
fun cumsum (xs: int list) =
tl(reverse(cumsum_reverse(reverse(xs, [])), []))
测试用例:
val test = cumsum[1,4,20] = [1,5,25]
有没有办法只使用一个函数来实现它?