使用 let 重写表达式
Rewrite an expression using 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)
我一直在教图式语言,在我的课本中我碰到了下面的表达式。我的问题是为什么要评估数字“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)