我已经定义了一个自定义列表类型作为家庭作业的一部分。
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 *)
我不能使用列表模块所以我不能使用
::
或 @
.
最佳答案
我想我的评论太长了,不能仅仅算作评论。我真的不想回答,我只是想给出提示。否则就达不到目的。
重复我的提示:
一种。第二个参数将在您的结果中显示不变,因此您可以
花时间担心第一个参数。
湾。您首先需要知道如何将某些内容附加到空列表中。即,您需要
知道当第一个参数为空时该怎么做。
C。您接下来需要知道如何将非空案例分解为较小的追加
问题。
如果您不知道如何创建一个项目,那么您可以从编写一个函数开始,该函数接受(比如说)一个整数和一个整数列表,并返回一个新列表,整数在前面。这是一个函数,它接受一个整数并返回一个仅包含该整数的列表:
let list1 k =
Item (k, Empty)
一种思考方式是每次
Item
出现在您的代码中,您正在创建一个新项目。 Item
之所以称为构造函数,是因为它构造了一个项目。我希望这有帮助。
关于list - 在 OCaml 中编写列表追加函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9487233/