我创建了自己的类型
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
。但实际上它是相同的类型。
是否可以比较两个这样的值?
答案 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
的界面中。