在OCaml中,我们为什么有'+。','-。'但是我们仅使用“ <”而不是“ <。”?

时间:2018-09-04 23:50:47

标签: functional-programming ocaml

标题说了。

在OCaml中,您可以执行     1 +1,但不是1.0 + 1.0

我有点理解,'+'是一个带有两个int参数的函数。

但是为什么我们有'>'可以用于float和int?

这是矛盾之处吗?

1 个答案:

答案 0 :(得分:4)

好吧,请注意,“>”适用于 any 一种类型的两个值。不只是数字。

但是,是的,多态比较运算符是OCaml中的一种特殊情况。从理论上讲,不可能定义这样的函数,因为没有一种先验的方法可以用任意类型“看内部”值。但是这些功能仍然存在,因为它们非常有用。

它们也有些危险,许多OCaml专家建议对它们非常小心。

这里有一些关于限制的讨论:Does compare work for all types?