OCaml函数类型(基本)

时间:2015-09-12 07:14:47

标签: types ocaml

我写了一个简单的OCaml代码

let sum a b : int -> int -> int = a + b

我听说因为currying,这个函数的类型应该是int-> int-> int,但是我遇到了编译错误。

1 个答案:

答案 0 :(得分:3)

冒号后,返回类型的函数。所以这将有效:

# let sum a b : int = a + b;;
val sum : int -> int -> int = <fun>

如您所见,完整类型为int -> int -> int

还有许多其他方法可以定义函数。一些例子:

您不需要提供任何类型;编译器会推断它们。

# let sum a b = a + b;;
val sum : int -> int -> int = <fun>

您可以给出每个参数的类型和结果类型:

# let sum (a: int) (b: int) : int = a + b;;
val sum : int -> int -> int = <fun>

如果您真的想要提供完整类型的功能,可以使用fun的等效表格:

# let sum : int -> int -> int = fun a b -> a + b;;
val sum : int -> int -> int = <fun>

您也可以将自己的功能定义为+的同义词:

# let sum : int -> int -> int = (+);;
val sum : int -> int -> int = <fun>

# let sum = (+);;
val sum : int -> int -> int = <fun>