我在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))
如何解读?我想这个函数允许两次打印一个元素,但也许我错了?有什么帮助吗?
答案 0 :(得分:1)
尝试评估(square 42)
。 : - )
答案 1 :(得分:0)
键入square
只会打印square
的值,这是一个函数。
(lambda (x) (f x x))
告诉你square
是一个接受一个参数的函数,它的值将被用作f
绑定的函数的两个参数,在这种情况下是*
。< / p>