Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 使用类型缩写/别名时,为什么要使用fun关键字?_F# - Fatal编程技术网

F# 使用类型缩写/别名时,为什么要使用fun关键字?

F# 使用类型缩写/别名时,为什么要使用fun关键字?,f#,F#,在下面的示例中,我使用类型缩写。为什么我应该使用fun关键字而不是不使用fun关键字来调用它 type AdditionFunction = int->int->int let f:AdditionFunction = fun a b -> a + b 因为否则您无法使用AdditionFunctiontype对其进行注释。你需要把它放在一个类型为int->int->int的值上,而F#syntax的工作方式是,你无法使用let-bound样式 你的选择是: let f :

在下面的示例中,我使用类型缩写。为什么我应该使用fun关键字而不是不使用fun关键字来调用它

type AdditionFunction = int->int->int

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

因为否则您无法使用
AdditionFunction
type对其进行注释。你需要把它放在一个类型为
int->int->int
的值上,而F#syntax的工作方式是,你无法使用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
的地方使用它

在一天结束时,类型别名只是-别名。它们可以与它们所代表的类型互换使用,并在编译过程中被删除