为什么认为加号 (+) 的类型与int -> int -> int
相对(int * int) -> int
?对我来说,第二个是有意义的,因为它“接受”一个 2 元组(加数)并返回一个int
(它们的总和)。
谢谢!
为什么认为加号 (+) 的类型与int -> int -> int
相对(int * int) -> int
?对我来说,第二个是有意义的,因为它“接受”一个 2 元组(加数)并返回一个int
(它们的总和)。
谢谢!
您可以制作一种(+)
具有 type的语言(int * int) -> int
。事实上,SML 正是以这种方式工作的。它只是影响中缀运算符的含义。然而,OCaml 约定强烈支持使用 curried 函数(类型a -> b -> c
)而不是非curried 函数。一个不错的结果是您可以部分应用它们。例如 ((+) 7) 是一个有意义的 type 表达式int -> int
。我发现这个符号经常很有用。
这可能看起来有点无用,但这是因为该函数需要两个参数。
当一个函数接受一个元组时,它实际上接受一个参数。
因为(+)
是一个内联函数,所以采用单个参数将没有用,因为它看起来+ (1,2)
与1 + 2
.