list - 在 OCaml 中编写列表追加函数

标签 list 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 *)

我不能使用列表模块所以我不能使用::@ .

最佳答案

我想我的评论太长了,不能仅仅算作评论。我真的不想回答,我只是想给出提示。否则就达不到目的。

重复我的提示:

一种。第二个参数将在您的结果中显示不变,因此您可以
花时间担心第一个参数。

湾。您首先需要知道如何将某些内容附加到空列表中。即,您需要
知道当第一个参数为空时该怎么做。

C。您接下来需要知道如何将非空案例分解为较小的追加
问题。

如果您不知道如何创建一个项目,那么您可以从编写一个函数开始,该函数接受(比如说)一个整数和一个整数列表,并返回一个新列表,整数在前面。这是一个函数,它接受一个整数并返回一个仅包含该整数的列表:

let list1 k =
    Item (k, Empty)

一种思考方式是每次 Item出现在您的代码中,您正在创建一个新项目。 Item之所以称为构造函数,是因为它构造了一个项目。

我希望这有帮助。

关于list - 在 OCaml 中编写列表追加函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9487233/

相关文章:

ios - 在Swift 2.0中填充列表并显示结果

c# - 如何检查一个项目是否存在于字符串列表中,如果存在,则获取其索引

python - 如何确定 Python 中数字列表的趋势

list - OCaml 中的空列表检查 (list = []) 有什么副作用吗?

python - 我怎样才能把这个文本文件转换成Python字典?

python - 如何在 python 中将一个列表中的项目与另一个列表进行匹配?

ocaml - 避免警告 "Warning 21: this statement never returns (or has an unsound type.)"

types - OCaml 嵌套结构

module - 模块中的函数语法错误,OCaml

haskell - OCaml 参数传递方案中的断点