那些返回类型的不同之处是什么?
val fn1 : int −> (int −> (int −> int))
val fn2: (int −> int) −> (int −> int)
这会创建一个
类型的函数int -> int -> int meaning int -> (int -> int)
是吗?它们具有相同的意义而没有括号!
答案 0 :(得分:3)
正如您所说,fn1
的函数类型等同于int -> int -> int -> int
。
如果您有多个curried参数,例如fn1 a b c
,则fn1 a
是int -> int -> int
类型的函数,而fn1 a b
是int -> int
类型的函数1}}。所以fn1
也可以看作是一个返回函数的函数,该函数返回一个返回int
的函数。添加像int -> (int -> (int -> int))
这样的括号会突出显示这种解释。
函数fn2
是不同的:它使用类型为int -> int
的函数作为参数,并返回另一个类型为int -> int
的函数。