Ocaml推理类型int列表而不是'列表

时间:2015-08-24 08:42:28

标签: types ocaml type-inference

let rec getElement list index = match list with
| [] -> raise OutOfBoundException
| first::elems -> if index = 0 then first else getElement elems index-1;;

我不明白为什么这个函数有类型(int list - > int - > int)而不是('list - > int - >'a)。 我需要编写返回列表中第n个元素的函数,它具有泛型类型(由用户定义类型exp:http://pastebin.com/UefshcLa)。

我该怎么写这个功能?为什么Ocaml推断列表是int列表而不是'列表?

1 个答案:

答案 0 :(得分:10)

OCaml解释(getElement elems index) - 1,因为函数应用程序强于-

let rec getElement list index = match list with
| [] -> raise OutOfBoundException
| first::elems -> if index = 0 then first else getElement elems (index-1);;