Sml 什么是=&燃气轮机&引用;以标准毫升表示的平均值?

Sml 什么是=&燃气轮机&引用;以标准毫升表示的平均值?,sml,Sml,似乎表示函数输出此。。。但我在任何地方都找不到解释。 我知道->代表类型,我要求解释=> val两次=fn f=>fn x=>f(f x); ^示例与关键字fn一起构成lambda表达式,即匿名函数。在您的示例中,两次被分配这样一个lambda表达式。带有更明显的偏执: val twice = (fn f => (fn x => f(f x))) 因此,两次是一个函数,它接受一个函数并返回另一个函数(另一个lambda表达式)。调用lambda表达式时,会发生与调用普通函数相同的

似乎表示函数输出此。。。但我在任何地方都找不到解释。 我知道
->
代表类型,我要求解释
=>

val两次=fn f=>fn x=>f(f x);

^示例

与关键字fn一起构成lambda表达式,即匿名函数。在您的示例中,
两次
被分配这样一个lambda表达式。带有更明显的偏执:

val twice = (fn f => (fn x => f(f x)))
因此,
两次
是一个函数,它接受一个函数并返回另一个函数(另一个lambda表达式)。调用lambda表达式时,会发生与调用普通函数相同的情况:

- fun plus2 x = x + 2;
> val plus2 = fn : int -> int
- twice plus2 4
> val it = 8 : int
tweep plus2
表示我们调用两次,参数f为
plus2
,因此它等价于
fn x=>plus2(plus2 x)
。当我们在4上调用结果时,
x
4
替换,导致
plus2(plus2 4)
,结果是8


使用
fun
的函数定义可以被看作是将lambda表达式分配给名称的语法糖,即以下两行是等效的:

fun foo x = x * 3
val foo = fn x => x * 3