寫一個清單追加功能我已經定義了一個自定義列表類型爲f部分家庭作業練習。OCaml中
type 'a myType =
| Item of ('a * 'a myType)
| Empty;;
我已經做了'長度',現在我需要'追加'功能。 我長功能:
let length l =
let rec _length n = function
| Empty -> n
| Item(_, next) -> _length (n + 1) next
in _length 0 l;;
但我真的不知道如何使附加功能。
let append list1 list2 = (* TODO *)
我不能用列表模塊,所以我不能使用任何::
或@
。
這顯然是一個家庭作業的問題。以下是我的提示:(a)您可以定義您的函數,以便第二個參數在結果中保持不變。所以你真的只需要擔心第一個參數。 (b)如果你遞歸思考,你只需要知道如何附加到一個空列表,以及如何將一個非空列表分解成一個較小的附加問題(即列表較短的列表)。我希望這可以幫助,但不是太多!此致, – 2012-02-28 18:17:31
我的問題是如何追加兩個元素?我是否必須使用「:=」?謝謝!! – K1ng0e 2012-02-28 18:19:02
您應該考慮創建* new *列表,而不是附加舊列表。但是,第二個列表可能在新列表中顯示不變。如果你有一個「Item(3,Empty)」列表,並且你想在開始時加上'4',結果會是什麼樣子? – 2012-02-28 18:36:11