使用 let 重写表达式



我一直在教方案语言,在我的教科书中,我找到了下面的表达方式。我的问题是为什么它评估数字"10"?有人可以向我解释一下吗?表示创建哪些本地环境以及创建哪些绑定到符号。我也知道每个 lambda 表达式都可以使用 let 重写。知道怎么做吗?我将不胜感激任何帮助。

(let ((x 10)) 
  (define y (lambda (x) x)) 
  (define x 5) 
  (+ x (y x)))

您的代码采用更易读的形式:

(let ((x 10))
  (define y (lambda (x) x))
  (define x 5)
  (+ x (y x)))

您可以应用替换方法:

(+ x (y x)) ; ==>
(+ 5 (y 5)) ; ==>
(+ 5 ((lambda (x) x) 5)) ; ==>
(+ 5 5) ; ==>
10

你弄错了。每个let都可以重写为立即调用的lambda

(let ((a aexpr) (b bexpr))
  body ...)
; ==
((lambda (a b) body ...) aexpr bexpr)

相关内容

  • 没有找到相关文章

最新更新