let add1 x = x + 1
和之间有什么区别let add2 x = x +1
.意外删除的空间从改变的函数的类型
val add1 : x:int->int
来
val add2 : x:(int -> 'a) -> 'a
据我所知,第一种类型的声明说add1
映射int
到int
.但第二个是什么意思.
好吧,'a
代表一个泛型类型,但该函数如何'add2'
返回泛型?
谢谢你的帮助.
Fyo*_*kin 18
这是F#语法的一个怪癖:一个加号或减号后面紧跟一个数字文字分别被视为正数或负数,而不是作为运算符后跟数字.
> 42
it : int = 42
> +42
it : int = 42
> -42
it : int = -42
Run Code Online (Sandbox Code Playgroud)
所以你的第二个例子let add2 x = x +1
相当于let add2 x = x 1
.表达式x 1
意味着它x
是一个函数并且它被应用于参数1
,这正是您的类型告诉您的:
add2 : x:(int -> 'a) -> 'a
Run Code Online (Sandbox Code Playgroud)
这表示add2
接受一个名为的函数x
,它接受int
并返回一些函数'a
,并且它add2
本身也返回相同的函数'a
.