[英]Reverse Mutable List Ocaml
我需要編寫一個函數,該函數將兩個可變列表作為輸入,而輸出將第一個列表反向添加到第二個列表。 類型定義為:
type 'a mylist = 'a listcell ref
and 'a listcell = Nil | Cons of 'a * ('a mylist)
我知道如何反轉常規列表,但是在編寫通過破壞性地更改第一個列表來實現此目的的功能時有些困惑。 這是我所擁有的,但是我不斷收到類型錯誤:
let rec rev_app l1 l2 =
let rec rev_app' l3 l4 =
match !l1 with
| Nil -> l2
| Cons (x,t) -> ref (rev_app t (Cons(x,l4)))
in rev_app' l1 l2
您的內部調用是rev_app
,而不是rev_app'
。 因此,您的代碼有點類似於說:
let rec f x = ref (f x)
附帶說明一下,引用您遇到的實際錯誤是一種很好的方式。 只是說“類型錯誤”並沒有太大幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.