写一个清单追加功能我已经定义了一个自定义列表类型为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