我正在Ocaml中编写一个递归函数,它应该计算整数列表中的项目数(是的,我知道有一个List.length函数,但我正在尝试自己做)。然而,Ocaml编译器/解释器迫使我一直使用alpha列表。
因此,当一个函数接受一个列表作为参数时,该列表的类型必须始终为alpha,这是错误的吗?感谢
编辑:为什么我不方便使用alpha列表的原因是因为类型匹配投诉我无法将alpha列表的头部与整数值进行比较答案 0 :(得分:6)
易:
let length (lst : int list) = ...
我有点困惑,比较绊倒了你;与整数进行比较应该只将'a
约束为int
。例如,在
let length lst = match lst with
| x :: xs when x = 0 -> ...
lst
的类型为int list
。