递归OCaml函数无法正常工作

时间:2017-10-21 12:55:29

标签: list recursion ocaml

我使用以下代码尝试将整数列表中连续数字的平均值放入新列表中:

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

但我一直收到以下错误,并且不明白为什么:     错误:此函数的类型为'列表 - > '列表 - > '列表它适用于太多的参数;也许你忘记了一个`;'。

1 个答案:

答案 0 :(得分:1)

您将average2函数传递给append函数,而不是在最后一行调用它。此外,newList为空,不会变异也不会被读取。返回时,您只需在列表中添加一个新头。

将其更改为

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