【问题标题】:The difference between parentheses in curried function types柯里化函数类型中括号的区别
【发布时间】: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)

对吗?不带括号的意思一样!

【问题讨论】:

    标签: sml smlnj ml


    【解决方案1】:

    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类型的函数。

    【讨论】:

    • 补充一下,fn2的类型也可以写成(int -> int) -> int -> int,但是第一个括号不能去掉
    猜你喜欢
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 2016-01-01
    • 2021-01-31
    • 2012-10-11
    • 2013-11-16
    相关资源
    最近更新 更多