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

use*_*180 4 f#

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

type AdditionFunction = int->int->int

let f:AdditionFunction = fun a b -> a + b
Run Code Online (Sandbox Code Playgroud)

scr*_*wtp 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 = 
   ...    
Run Code Online (Sandbox Code Playgroud)

并且只有第一个具有可以用别名替换的类型.

但最终你不需要这样做.您可以将其定义为一个int -> int -> int函数,并且您仍然可以在任何使用它的地方使用它AdditionFunction.

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