gpt4 book ai didi

lambda - 通过程序执行的说明

转载 作者:太空宇宙 更新时间:2023-11-03 18:59:09 25 4
gpt4 key购买 nike

在 SICP 讲座 2a 中,我对 (average (f x) x) 感到困惑。它不能只是 (average f x)f 不是已经表示 (/x y)lambda 了吗?为什么我需要 (average (f x) x)?有人可以帮我解决这个问题吗?

(define (sqrt x)
(fixed-point
(average-damp (λ (y) (/ x y)))
1))

(define average-damp
(λ (f)
(λ (x) (average (f x) x))))

最佳答案

这段代码:

(average (f x) x)

意思与此不同:

(average (f) x)

对于初学者来说,f 是一个函数,它需要一个参数,在本例中必须是 x,因此我们说 (f x) 。如果您编写 (f),您将尝试不带参数调用 f,从而导致错误。用 f 参数的值调用 average-damp 后,我们发现它返回 another lambda ,即:

(λ (x)
(average ((λ (y) (/ x y)) x) x))

如您所见,在这个表达式 ((λ (y) (/x y)) x) 中,x 作为参数传递给 ( λ (y) (/x y)) x)(即 f),x 绑定(bind)到 y 参数。不要混淆!因为现在我们有:

(/ x x)

但此时第一个 x 不是变量,它是调用 sqrt 时在闭包中捕获的 value,而第二个 x 是我们刚刚返回的 lambda 中的参数,并且在调用它之前仍然是未绑定(bind)的,大概是 fixed-point.

关于lambda - 通过程序执行的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24125047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com