使用Type缩写/别名时,我为什么要使用fun关键字?

时间:2017-07-08 14:08:07

标签: f#

在下面的示例中,我使用的是Type缩写。为什么我应该使用fun关键字,而不是在没有fun关键字的情况下调用它?

type AdditionFunction = int->int->int

let f:AdditionFunction = fun a b -> a + b

1 个答案:

答案 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的地方使用它。

在一天结束时,键入别名就是 - 别名。它们可以与它们所代表的类型互换使用,并在编译期间被删除。