Scheme嵌套lambda函数

时间:2015-05-23 05:10:04

标签: function lambda nested scheme sicp

我是Scheme的初学者。我在麻省理工学院的考试1中找到了这个问题,用于SICP讲座。

-

的价值和类型是什么
((lambda (a) (lambda (b) (+ (sqrt a) (sqrt b)))) 5)

我很难理解这个功能是如何工作的。我对参数b感到困惑。只有5作为参数传递给外部lambda函数,那么b对内部lambda函数的值是什么?

我尝试在mit-scheme中运行此函数,但每次运行时结果值都会递增。

1 个答案:

答案 0 :(得分:2)

你是正确的,只有外部的lambda形式被应用于参数5.然后它返回它的身体,a替换为5,所以它会返回

(lambda (b) (+ (sqrt 5) (sqrt b)))

这本身就是一个功能。这可以在以后应用于另一个参数,以产生实际的数值。