比较OCaml中的自定义类型

时间:2015-10-21 15:52:21

标签: unit-testing compare ocaml

我创建了自己的类型

type mine = int * int

我创建了一个构造函数

val cons: int -> int -> mine

现在我想编写几个单元测试,检查构造函数是否创建了我期望的内容

open OUnit2;;
let tst _ = assert_equal (7, 15) (Foo.cons 14 45)

然后编译比较类型(预期int*int但得到Foo.mine。但实际上它是相同的类型。

是否可以比较两个这样的值?

1 个答案:

答案 0 :(得分:1)

type mine = int * int这样的类型定义只是一个缩写。所以原则上没有什么能阻止比较。

# type mine = int * int;;
type mine = int * int
# let cons a b : mine = (a, b);;
val cons : int -> int -> mine = <fun>
# compare (3, 3) (cons 3 3);;
- : int = 0

因此,本质是在您的模块Foo的界面中。