OCaml布尔表达式[[]] == [[]]

时间:2012-04-04 10:36:18

标签: list boolean ocaml expression

我有一个返回[[]]的函数,我想将结果作为单元测试进行测试。 但我发现表达式[[]] == [[]]返回false。 这是一个简单的测试代码:

# [[]] == [[]];;
- : bool = false

有人可以解释为什么这个表达式被评估为假?

感谢。

2 个答案:

答案 0 :(得分:13)

使用=,因为您有结构相等来比较两个值:

# [[]] = [[]];;
- : bool = true

因为==引用相等,所以如果引用相同的内存位置,它只会返回true:

let a = [[]]
let b = a

# b == a;;
- : bool = true

答案 1 :(得分:9)

OCaml中的==运算符意味着“物理平等”。但是,您有两个(物理上)不同的列表。也许,你想要“结构平等”,它由=测试。