OCaml - 创建自定义类型的自定义类型

Rek*_*aru 2 constructor ocaml types

如果我有数据类型识别和人,我该如何使用它们?

type identification = Name of string
| SS of int * int;;

type person = Personal_info of identification;;
Run Code Online (Sandbox Code Playgroud)

如何制作具有标识的人物类型?我如何构造一个包含这些类型的变量..?

像这样:

person1 = Personal_info (Name = "Cody") (SS = (231,4534));;
val person1 : person = .....
Run Code Online (Sandbox Code Playgroud)

Jef*_*eld 5

你的identification类型指定任何一个名字或者一个社会安全号码。在我看来,你想同时拥有它们。为此,您可能应该使用记录类型:

type ident = { name: string; ss: int * int }
Run Code Online (Sandbox Code Playgroud)

由于您的person类型只有一种变体,因此它是多余的(并不是说它在某些情况下没有用)。

这是一个类型的值ident:

{ name = "Cody"; ss = (231, 4534) }
Run Code Online (Sandbox Code Playgroud)

如果你真的想使用这个person类型,它看起来像这样:

type person = PI of ident
Run Code Online (Sandbox Code Playgroud)

这种类型的值如下所示:

PI { name = "Cody"; ss = (231, 4534) }
Run Code Online (Sandbox Code Playgroud)