Нужна помощь в реализации двусвязного списка в OCaml - PullRequest
0 голосов
/ 30 апреля 2020

Мне понадобилась помощь в создании двусвязного списка из списка в 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
...