Поскольку OCaml не является чистым функциональным языком, существует множество способов сделать это.Вот способ, которым я пишу этот вид кода, только для конкретного примера.
let rec mylength list =
(* DEBUG *)
let () = Printf.printf "mylength here, null list: %b\n%!" (list = [])
in
(* DEBUG *)
match list with
| [] -> 0
| _ :: rest -> 1 + mylength rest
После того, как это сработает, вы можете удалить материал внутри (* DEBUG *) комментариев.
Примечаниеиспользование %!очистить буфер.Если вы делаете много отладок с printf
(как я), очень полезно узнать об этом.