递归类型和列表有什么区别?

Nuc*_*uid 0 ocaml list

我对 OCaml 还很陌生(目前在大学上的课程很糟糕),我们最近研究了递归类型。我们被告知我们用它来创建列表,但 OCaml 中已经有列表了,所以我不太明白什么时候应该使用一个而不是另一个。

\n

示例\xe2\x80\xaf:

\n
(* list made with a recursive type : *)\ntype int_list =\n    | None\n    | Element of int * int_list\n\n(* just a list *)\nlet int_list2 : int list = [] \n
Run Code Online (Sandbox Code Playgroud)\n

sep*_*p2k 7

递归类型和列表有什么区别?

“递归类型”描述了一整类类型,而list是一种特定的递归类型。换句话说:list是一个递归类型,但是除了 之外还有其他递归类型list

OCaml 中已经有列表了,所以我不太明白什么时候应该使用其中一个而不是另一个。

什么时候应该使用int_list内置list类型?绝不。您的老师向您展示了这个定义,作为递归类型的示例,而不是您应该实际使用的东西。

仅当定义标准库中尚不存在的内容时(当然学习练习除外),您才需要定义自己的递归类型。