【发布时间】:2023-03-09 04:41:01
【问题描述】:
我有一个生成斐波那契数的函数:
let rec fib n =
match n with
| (0 | 1) -> 1
| x when x > 0 -> (fib (x-2) + fib (x-1))
| _ -> raise (Invalid_argument "Negative value supplied to fib");;
但我真正想要的是它返回一个所述数字的列表。我试过这个:
let rec fib n list =
match n with
| (0 | 1) -> 1 :: []
| x when x > 0 -> (fib (x-2) list + fib (x-1) list) :: list
| _ -> raise (Invalid_argument "Negative value supplied to fib");;
但是 ocamlc 说
文件“main.ml”,第 2 行,字符 4-174: 错误:此表达式的类型为 int list 但是需要一个 int 类型的表达式
(第 2 行字符 4-174 对应于匹配块)。我希望它返回类型“int list”,为什么它会推断类型 int?
【问题讨论】: