使用 lambdas 对这个 Scheme 过程的复杂评估的解释
Explanation of complex evaluation for this Scheme procedure using lambdas
我想知道以下代码如何计算为 15。
((lambda(x y) (+ (x * y) (x + y))) (lambda (a b) (a b b)) 3)
我看了一段时间,似乎无法理解为什么评估没有导致错误。有人可以提供有关如何计算为 15 的详细分步说明吗?
如果您命名 lambda 表达式,也许更容易看出发生了什么。例如,
(define (f x y)
(+ (x * y) (x + y)))
(define (g a b)
(a b b))
则表达式((lambda (x y) (+ (x * y) (x + y))) (lambda (a b) (a b b)) 3)
变为:
(f g 3)
它的计算结果为:
(f g 3)
=> (+ (g * 3) (g + 3))
=> (+ (* 3 3) (+ 3 3))
=> (+ 9 6)
=> 15
我想知道以下代码如何计算为 15。
((lambda(x y) (+ (x * y) (x + y))) (lambda (a b) (a b b)) 3)
我看了一段时间,似乎无法理解为什么评估没有导致错误。有人可以提供有关如何计算为 15 的详细分步说明吗?
如果您命名 lambda 表达式,也许更容易看出发生了什么。例如,
(define (f x y)
(+ (x * y) (x + y)))
(define (g a b)
(a b b))
则表达式((lambda (x y) (+ (x * y) (x + y))) (lambda (a b) (a b b)) 3)
变为:
(f g 3)
它的计算结果为:
(f g 3)
=> (+ (g * 3) (g + 3))
=> (+ (* 3 3) (+ 3 3))
=> (+ 9 6)
=> 15