2017-10-20 99 views
1

那些返回类型的区别是什么?咖喱函数类型中圆括号的区别

val fn1 : int −> (int −> (int −> int)) 
val fn2: (int −> int) −> (int −> int) 

这将创建类型的函数

int -> int -> int meaning int -> (int -> int) 

是这样吗?没有支架,它们具有相同的含义!

回答

3

如您所说,fn1的功能类型相当于int -> int -> int -> int

当你有多个curried参数,像fn1 a b c,然后fn1 aint -> int -> int类型的函数,而fn1 a bint -> int类型的函数。因此fn1也可以被看作是一个返回函数的函数,该函数返回返回int的函数。添加像int -> (int -> (int -> int))这样的括号就突出了这种解释。

功能fn2不同的是:它需要int -> int类型的函数作为参数并返回int -> int类型的另一功能。

+1

要加,'fn2'的类型也可以写成'(int - > int) - > int - > int',但是第一个圆括号不能被删除 – newacct