这是男人或男孩测试计划代码:
(define (A k x1 x2 x3 x4 x5)
(define (B)
(set! k (- k 1))
(A k B x1 x2 x3 x4))
(if (<= k 0)
(+ (x4) (x5))
(B)))
Run Code Online (Sandbox Code Playgroud)
为了简化评估过程,我将其重写为:
(define (A k x1 x2)
(define (B)
(set! k (+ k -1))
(A k B x1))
(if (> 1 k)
(x2)
(B)))
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么(A 2 (lambda () 1) (lambda () -1))返回1.
任何人都可以解释Scheme解释器如何逐步评估此表达式.如果你可以附上环境图,那就更好了:)