【发布时间】:2015-11-09 10:12:49
【问题描述】:
函数类型的顺序是什么:int -> int -> int -> int?
我真的不明白问题在问什么或从哪里开始找出答案。我似乎在任何地方都找不到关于 sml 的任何有用页面。
【问题讨论】:
标签: sml
函数类型的顺序是什么:int -> int -> int -> int?
我真的不明白问题在问什么或从哪里开始找出答案。我似乎在任何地方都找不到关于 sml 的任何有用页面。
【问题讨论】:
标签: sml
首先,ML 是一种函数式语言,因此,如果您缺少 SML 特定材料,您仍然应该能够从任何函数式语言参考资料中收集有用的信息。阅读一阶和高阶函数应该会有所帮助。然而,这并不是一个真正的 ML(或 SML)问题,而是一个函数式编程问题。
需要注意的是,我的功能知识可能已经生疏了:
如果函数的参数和结果值都是“数据”,即不是其他函数,则该函数是一阶的。如果一个函数接受另一个函数作为参数或返回一个函数作为参数,则该函数是高阶函数。
然后,高阶函数的阶被定义为比其参数或返回值的阶多一。
int -> int 函数类型描述了一个接受 int 并输出 int 的函数。因此这是一个一阶函数,阶数为 1。
函数类型int -> int -> int描述了一个接受一个int,并输出的函数(一个接受一个int并输出一个int的函数),例如我们可以重写
int -> int -> int
作为
int -> (int -> int)
因此,采用 int 的函数的输出是另一个(一阶)函数,就像我之前描述的那样。
现在,我们知道参数 (int) 的顺序是 1(它只是数据,而不是函数),并且 输出 的顺序(例如,一阶函数 int -> int) 也是 1,因此整个函数类型 int -> int -> int 的顺序是 1+1,例如2.
通过类似的扩展,函数类型的顺序
int -> int -> int -> int
是 3。
【讨论】: