方案中高阶函数的分析

时间:2016-06-10 17:54:31

标签: scheme

我在Scheme中找到了以下关于高阶函数的代码:

(define make-double (lambda (f)
                      (lambda (x)
                        (f x x))))
(define square (make-double *))

对于我看到make-double作为参数接收函数:f,此函数接收和x作为参数。这个参数x加倍,make-double返回函数f,此x值加倍。是这样的吗?

对函数square的调用很简单,只需调用函数make-double和函数*,但是如何运行这个程序?当我执行它时:

square

它回到我身边:

(lambda (x) (f x x))

如何解读?我想这个函数允许两次打印一个元素,但也许我错了?有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

尝试评估(square 42)。 : - )

答案 1 :(得分:0)

键入square只会打印square的值,这是一个函数。

(lambda (x) (f x x))

告诉你square是一个接受一个参数的函数,它的值将被用作f绑定的函数的两个参数,在这种情况下是*。< / p>