如何在 OCaml 中创建自定义数据类型的实例?
How do I create an instance of a custom data type in OCaml?
如果我有如下自定义数据类型 'triple',我将如何创建一个我可以使用的实例?
type triple = int * int * int
谢谢!
这是一个例子:
let my_instance = (1, 2, 3)
就其价值而言,您的类型不是新类型,它只是预先存在的类型的方便缩写,即 3 个整数的元组。没有构造函数的类型声明只是一个缩写,所以不是我所谓的“自定义”类型。
# ((1, 2, 3) : triple) = (1, 2, 3)
- : bool = true
我不确定这对您是否重要,但如果您需要一个与任何其他类型都不兼容的新类型,则需要一个构造函数。像这样:
type triple2 = T of int * int * int
然后你可以创建一个这样的实例:
let my_instance2 = T (1, 2, 3)
此新类型 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
如果我有如下自定义数据类型 'triple',我将如何创建一个我可以使用的实例?
type triple = int * int * int
谢谢!
这是一个例子:
let my_instance = (1, 2, 3)
就其价值而言,您的类型不是新类型,它只是预先存在的类型的方便缩写,即 3 个整数的元组。没有构造函数的类型声明只是一个缩写,所以不是我所谓的“自定义”类型。
# ((1, 2, 3) : triple) = (1, 2, 3)
- : bool = true
我不确定这对您是否重要,但如果您需要一个与任何其他类型都不兼容的新类型,则需要一个构造函数。像这样:
type triple2 = T of int * int * int
然后你可以创建一个这样的实例:
let my_instance2 = T (1, 2, 3)
此新类型 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