如何在 OCaml 中创建自定义数据类型的实例?

red*_*_12 0 ocaml types

如果我有一个自定义数据类型“三重”,如下所示,我将如何创建一个可以使用的实例?

type triple = int * int * int

谢谢你!

Jef*_*eld 7

这是一个例子:

let my_instance = (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

就其价值而言,您的类型不是新类型,它只是现有类型(3 个整数的元组)的方便缩写。没有构造函数的类型声明只是一个缩写,所以并不是我所说的“自定义”类型。

# ((1, 2, 3) : triple) = (1, 2, 3)
- : bool = true
Run Code Online (Sandbox Code Playgroud)

我不确定这对你来说重要,但如果你需要一个与其他任何类型都不兼容的新类型,你需要一个构造函数。像这样的东西:

type triple2 = T of int * int * int
Run Code Online (Sandbox Code Playgroud)

然后你可以创建一个这样的实例:

let my_instance2 = T (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

这种新类型triple2与任何其他类型都不兼容(例如,triple):

# T (1, 2, 3) = (1, 2, 3)
Error: This expression has type 'a * 'b * 'c
       but an expression was expected of type triple2
Run Code Online (Sandbox Code Playgroud)