F#四重双功能

Che*_*val 1 f#

根据TryF#.org网站,此功能将返回输入数字的四倍.

let quadruple x =    
    let double x = x * 2

double(double(x))
Run Code Online (Sandbox Code Playgroud)

谁能解释为什么我将其解释如下?Quadruple不执行任何突变或多次调用.

function quadruple(x)
  return function double(x)
    return x * 2
Run Code Online (Sandbox Code Playgroud)

或C#

int a(int x) { return b(x); }
int b(int x) { return x * 2; }
Run Code Online (Sandbox Code Playgroud)

Tom*_*cek 5

我认为这只是一个混乱的缩进.该函数应该如下所示:

let quadruple x =    
    let double x = x * 2
    double(double(x))
Run Code Online (Sandbox Code Playgroud)

这应该更有意义 - quadruple函数定义一个函数double,然后在输入上调用它x(乘以2),然后应用于double结果,再次乘以2,结果是(x * 2) * 2.

使用示例中的缩进,代码将无法编译,因为它在语法上不是有效的(函数体不能以let行结束- 它需要以表示要返回的结果的表达式结束).