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

标签 types constructor ocaml

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

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

type person = Personal_info of identification;;

如何创建具有身份识别的人物类型?如何构造一个包含这些类型的变量..?

像这样:

person1 = Personal_info (Name = "Cody") (SS = (231,4534));;
val person1 : person = .....

最佳答案

您的身份类型指定姓名或社会安全号码。在我看来你想同时拥有它们。为此,您可能应该使用记录类型:

type ident = { name: string; ss: int * int }

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

这是一个 ident 类型的值:

{ name = "Cody"; ss = (231, 4534) }

如果您确实想使用 person 类型,它看起来像这样:

type person = PI of ident

这种类型的值看起来像这样:

PI { name = "Cody"; ss = (231, 4534) }

关于types - OCaml - 创建自定义类型的自定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31779865/

相关文章:

mysql - 存储 RSA key 的最佳 mysql 数据类型?

haskell - 检查特定的数据构造函数

javascript - 为什么在 JavaScript 中函数既是构造函数又是对象?

recursion - 是否可以在 OCaml 中将一组递归函数拆分为 2 个文件?

floating-point - 核心OCaml中浮点的绝对值

java - List 和 LinkedList 之间的类型不兼容

haskell - 如何解决这些 Haskell Kind 错误

c++ - 从复制构造函数调用默认赋值运算符是不好的形式吗?

java - 具有已发布 Api 但默认访问构造函数的抽象类

function - OCaml:函数参数的默认值?