OCaml类型的加号运算符

Muh*_*han 6 ocaml

为什么加号(+)的类型被认为是int -> int -> int相反的(int * int) -> int?对我来说,第二个是有道理的,因为它"接受"一个2元组(加数)并返回一个int(它们的总和).

谢谢!

Jef*_*eld 12

您可以创建(+)具有类型的语言(int * int) -> int.实际上,SML就是这样运作的.它只会影响中缀运算符的含义.然而,OCaml约定强烈支持使用a -> b -> ccurried 函数(类型)而不是未使用的函数.一个很好的结果是你可以部分应用它们.例如((+)7)是一个有意义的类型表达式int -> int.我经常发现这种符号很有用.