【问题标题】:Scheme nested lambda function方案嵌套 lambda 函数
【发布时间】:2015-05-23 05:10:04
【问题描述】:

我是 Scheme 的初学者。我在 SICP 讲座的 MIT 考试 1 中发现了这个问题。

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

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

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

【问题讨论】:

    标签: function lambda nested scheme sicp


    【解决方案1】:

    您是正确的,只有外部 lambda 形式应用于参数 5。然后它返回其主体,并将 a 替换为 5,因此它会返回

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

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

    【讨论】:

    • 当我在 mit-scheme 中运行代码时,我得到的结果如下Value 13: #[compound-procedure 13] 。这里的值 13 是什么?当我再次运行代码时,值会增加为Value 14:#[compound-procedure 14]。为什么会发生这种情况?
    • 听起来这些可能只是为每个过程生成的唯一 ID。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多