OCaml递归列表大小函数返回不正确的大小

时间:2017-09-20 14:04:35

标签: list recursion ocaml

我认为这正是找到列表长度的代码:

let rec size lst =
  match lst with
    | [] -> 0
    | h::t -> 1 + (size t);;

但出于某种原因,当我将它应用于大小为2的列表时,它返回1?我觉得我错过了一些明显的问题,但这对我来说似乎很简单。

1 个答案:

答案 0 :(得分:4)

表达式size [1,2]将返回1,因为[1,2][(1,2)]的语法糖,即它是由一对组成的列表。列表的元素由OCaml中的分号;分隔。因此,size [1;2]将返回2