У меня есть очень интересный первый проект, чтобы узнать OCaml, после создания Personnal list
типа, как, например:Тип ошибки на функцию длины
type 'a my_list = Item of ('a * 'a my_list) | Empty;;
И наполняя его, как, например:
let num_list = Item (1, Item (2, Item(3, Empty)));;
Я должен перекодировать многие функции модуля списка, которые будут адаптированы к моему новому типу списка, как показано выше.
Я начинаю с Length
, который звучит как самый простой и хороший для начала.
Вот что я до сих пор:
let rec length my_list =
match my_list with
| [] -> 0
| head::rest -> 1 + (length rest);;
, которая имеет право определение:
val length : 'a list -> int = <fun>
Но когда я прохожу свой вновь созданный список, я получаю следующее сообщение об ошибке:
Error: This expression has type int my_list but an expression was expected of type 'a list
Что я упускаю?
Я до сих пор наслаждаюсь OCaml и очень ценю вашу помощь.
О, я вижу! Большое вам спасибо за вашу помощь, это поможет мне для других функций. –