标题说明了这一点。
在OCaml中,你可以做1+1,但不能做1.0 + 1.0
我有点明白了,'+‘是一个接受两个int参数的函数。
但是为什么我们有'>‘,它适用于float和int呢?
这是不一致的吗?
发布于 2018-09-05 08:19:40
注意,'>‘适用于任何一种类型的两个值。这不仅仅是为了数字。
但确实,多态比较运算符是OCaml中的一种特例。从理论上讲,定义这样的函数是不可能的,因为没有一种先验的方法来“查看”具有任意类型的值。然而,这些函数仍然存在,因为它们非常有用。
它们也有些危险,许多OCaml专家建议要非常小心地使用它们。
这里有一些关于限制的讨论:Does compare work for all types?
https://stackoverflow.com/questions/52175308
复制相似问题