我一直在教方案语言,在我的教科书中,我按下了以下表达式。我的问题是为什么要对数字“ 10”进行评估?有人可以向我解释吗?意思是创建什么本地环境以及创建到符号的绑定。
我也知道可以使用let
重写每个lambda表达式。任何想法如何做到这一点?
我将不胜感激。
(let ((x 10))
(define y (lambda (x) x))
(define x 5)
(+ x (y x)))
答案 0 :(得分:4)
您的代码更具可读性:
(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)