首页 > 解决方案 > 在 OCaml 中,为什么我们有 '+.'、'-.' 但我们只使用 '<' 而不是 '<.'?

问题描述

标题说了算。

在 OCaml 中,你可以做 1 + 1 但不能做 1.0 + 1.0

我有点明白了,'+' 是一个接受两个 int 参数的函数。

但是为什么我们有适用于 float 和 int 的 '>' 呢?

这是不一致吗?

标签: functional-programmingocaml

解决方案


好吧,请注意,'>' 适用于任何一种类型的两个值。这不仅仅是为了数字。

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

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

这里有一些关于限制的讨论:比较是否适用于所有类型?


推荐阅读