2017-10-21 142 views
0

递归函数ocaml的,我用下面的代码,试图把连续数字的平均值的整数列表成为一个新列表不工作

let newList = [] 
let rec average2 xs = 
match xs with 
| [] -> newList 
| x :: [] -> newList 
| x :: x' :: [xs] -> append newList [((x + x')/2)] average2 x' :: [xs];; 

,但我不断收到以下错误和Don”理解为什么: 错误:此函数的类型为'列表 - >'列表 - >'列表它应用于太多的参数;也许你忘了';'。

+0

为什么你'newList'?它总是一个空的列表。 – Palle

+0

@Palle我想用它作为变量的一个亲属来继续添加元素到 – KONADO

+0

'newList'是不变的,它从来没有从代码中读取。 – Palle

回答

1

您正在将average2函数传递给append函数,而不是在最后一行中调用它。另外,newList为空,不会发生突变或读取。您可以在返回时将新头添加到列表中。

将其更改为

((x + x')/2) :: (average2 x' :: [xs]) 
+0

我仍然得到相同的错误 – KONADO

+0

从参数列表中删除'newList'。无论如何这是一个空的列表。 – Palle

相关问题