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

What's the difference between a recursive type and a list?

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

示例:

(* list made with a recursive type : *)
type int_list =
    | None
    | Element of int * int_list

(* just a list *)
let int_list2 : int list = [] 

What's the difference between a recursive type and a list?

“递归类型”描述了整个类型类别,而 list 是一种特定的递归类型。也就是说:list是递归类型,但是除了list.

还有其他递归类型

there already are lists in OCaml so I don't really understand when I should be using one over the other.

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

只有在定义标准库中不存在的东西时,您才会定义自己的递归类型(当然学习练习除外)。