Мне понадобилась помощь в создании двусвязного списка из списка в OCaml. Я работал над некоторым кодом, но продолжаю сталкиваться с ошибками типа. Я новичок в языке, поэтому любая помощь приветствуется.
Я добавил свой код из-за его длины: https://pastebin.com/v9pQtFvV
Большинство моих проблем проистекают из этой функции, которую я написал для преобразования списка в двусвязный список.
(*create dll from list *)
let dll_of_list l =
let singly_linked =
List.fold_left (fun acc x ->
Cons((fun () -> Nil), x, (fun () -> acc))) (create ()) (List.rev l)
in
begin match singly_linked with
| Nil -> Nil
| Cons(_,x,next_thunk) ->
let next = next_thunk () in
let rec l' =
Cons((fun () -> Nil),x,(fun () -> create_new_rev l' next))
in l'
end