在下面的示例中,我使用的是Type缩写。为什么我应该使用fun关键字,而不是在没有fun关键字的情况下调用它?
type AdditionFunction = int->int->int
let f:AdditionFunction = fun a b -> a + b
答案 0 :(得分:6)
因为否则您无法使用AdditionFunction
类型对其进行注释。您需要将其放在类型为int -> int -> int
的值上,并且F#语法的工作方式是您无法使用let-bound样式执行此操作。
您的选择是:
let f : int -> int -> int =
fun a b -> ...
let f a : int -> int =
fun b -> ...
let f a b : int =
...
并且只有第一个具有可以用别名替换的类型。
但最终你不需要这样做。您可以将其定义为int -> int -> int
功能,并且您仍然可以在任何使用AdditionFunction
的地方使用它。
在一天结束时,键入别名就是 - 别名。它们可以与它们所代表的类型互换使用,并在编译期间被删除。