标题说了。
在OCaml中,您可以执行 1 +1,但不是1.0 + 1.0
我有点理解,'+'是一个带有两个int参数的函数。
但是为什么我们有'>'可以用于float和int?
这是矛盾之处吗?
答案 0 :(得分:4)
好吧,请注意,“>”适用于 any 一种类型的两个值。不只是数字。
但是,是的,多态比较运算符是OCaml中的一种特殊情况。从理论上讲,不可能定义这样的函数,因为没有一种先验的方法可以用任意类型“看内部”值。但是这些功能仍然存在,因为它们非常有用。
它们也有些危险,许多OCaml专家建议对它们非常小心。
这里有一些关于限制的讨论:Does compare work for all types?