【发布时间】:2017-10-22 15:41:08
【问题描述】:
这些返回类型有什么不同?
val fn1 : int −> (int −> (int −> int))
val fn2: (int −> int) −> (int −> int)
这会创建一个类型为
的函数int -> int -> int meaning int -> (int -> int)
对吗?不带括号的意思一样!
【问题讨论】:
这些返回类型有什么不同?
val fn1 : int −> (int −> (int −> int))
val fn2: (int −> int) −> (int −> int)
这会创建一个类型为
的函数int -> int -> int meaning int -> (int -> int)
对吗?不带括号的意思一样!
【问题讨论】:
fn1的函数类型,如你所说,等价于int -> int -> int -> int。
如果您有多个 curried 参数,例如 fn1 a b c,则 fn1 a 是 int -> int -> int 类型的函数,fn1 a b 是 int -> int 类型的函数。所以fn1也可以看作是一个函数返回一个函数,该函数返回一个返回int的函数。添加像 int -> (int -> (int -> int)) 这样的括号会突出显示该解释。
函数fn2不同:它接受一个int -> int类型的函数作为参数,并返回另一个int -> int类型的函数。
【讨论】:
fn2的类型也可以写成(int -> int) -> int -> int,但是第一个括号不能去掉