F# 这个函数是如何工作的?

F# 这个函数是如何工作的?,f#,F#,我面临着这个密码 let quadruple x = let double x = x * 2 而且提到,, fourple调用double函数两次以执行(低效的)四倍 这是怎么发生的? 我认为四极体得到x,然后x将被传递给四极体中定义的双精度体。因此,它必须作为堆栈工作 它首先计算x*2,然后将结果返回到四倍,就结束了 那么为什么fourple调用double函数两次呢原来的代码段又少了一行。它一定是这样的: let quadruple x =

我面临着这个密码

let quadruple x =    
    let double x =
        x * 2
而且提到,, fourple调用double函数两次以执行(低效的)四倍

这是怎么发生的? 我认为四极体得到x,然后x将被传递给四极体中定义的双精度体。因此,它必须作为堆栈工作

它首先计算x*2,然后将结果返回到四倍,就结束了


那么为什么fourple调用double函数两次呢

原来的代码段又少了一行。它一定是这样的:

let quadruple x =    
    let double x =
        x * 2
    double(double x)
以这种方式编写,
double
只是
fourple
中定义的一个内部子函数。这只是一个定义。除非有人打电话,否则它什么都干不了


最后一行属于
quartle
的主体。实际上,它首先使用
x
参数调用
double
,然后使用接收到的结果再次调用,实际上是原始值的四倍。

原始代码段又少了一行。它一定是这样的:

let quadruple x =    
    let double x =
        x * 2
    double(double x)
以这种方式编写,
double
只是
fourple
中定义的一个内部子函数。这只是一个定义。除非有人打电话,否则它什么都干不了


最后一行属于
quartle
的主体。实际上,它首先使用
x
参数调用
double
,然后使用收到的结果再次调用它,实际上是原始值的四倍。

按原样,您的代码无效,在这个“let”[let double one]后面引发:块未完成。需要一个表达式。按原样,您的代码无效。在“let”[let double one]后面引发:块未完成。期待一个表情。