根据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)
我认为这只是一个混乱的缩进.该函数应该如下所示:
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
行结束- 它需要以表示要返回的结果的表达式结束).