У меня есть функция, которая генерирует числа Фибоначчи:
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 список, ноожидалось выражение типа int
(символы строки 2-174 соответствуют блоку соответствия).Я хочу, чтобы это возвращало тип "int list", почему это выводит тип int?