gpt4 book ai didi

function - Caml中功能的物理平等测试

转载 作者:行者123 更新时间:2023-12-01 09:14:18 25 4
gpt4 key购买 nike

在 Caml 中,运算符 ==测试同一类型的两个值之间的物理相等性。它尤其可以用于以这种方式比较功能。

例如有一个

# print_string == print_string;;
- : bool = true

但是,令人惊讶的是,
# (==) == (==);;
- : bool = false

该表达式应计算为 true .

你能解释一下这种行为吗?

最佳答案

== 的行为在 Pervasives 中定义模块:

e1 == e2 tests for physical equality of e1 and e2. On mutable types such as references, arrays, byte sequences, records with mutable fields and objects with mutable instance variables, e1 == e2 is true if and only if physical modification of e1 also affects e2. On non-mutable types, the behavior of ( == ) is implementation-dependent; however, it is guaranteed that e1 == e2 implies compare e1 e2 = 0



由于函数是不可变的,唯一的保证是如果它们比较等于 ==它们还将与 compare 进行比较.由于不能保证函数与 compare 具有可比性, 这实质上意味着 ==对于比较函数根本没有用。
# compare (==) (==);;
Exception: Invalid_argument "equal: functional value".

如果 ==返回 false对于不可变的值,根本无法保证。这意味着 ==免费退货 false随时为任何不可变的值。所以返回 false是不妥的在你的第二个例子中。

关于function - Caml中功能的物理平等测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37776837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com