2010-04-12 71 views
1

我在Ocaml中编写了一个递归函数,该函数应该计算整数列表中的项数(是的,我知道有一个List.length函数,但我试图自己做)。然而,Ocaml编译器/解释器迫使我一直使用alpha列表。是否有可能只接受整数列表的Ocaml函数?

所以说错了,当一个函数接受一个列表作为参数时,该列表的类型必须始终为alpha?由于

编辑:为什么它的不方便我使用阿尔法名单的原因是因为我不能由于类型匹配的投诉

回答

6

易整数值阿尔法列表的头比较:

let length (lst : int list) = ... 

我有点困惑,比较会让你失望;与整数的比较应该将'a约束为int。例如,在

let length lst = match lst with 
    | x :: xs when x = 0 -> ... 

lst将有类型int list

+0

可能需要添加'rec'。 – grettke 2010-04-12 15:40:39

+1

我只加注一次,因为你没有使用短语“主体类型”,而这种短语本来就是在上下文中,而且OCaml很久以前就留在了路边。 – 2010-04-12 23:29:47

相关问题