小编gle*_*ort的帖子

Scheme如何评估男人或男孩的测试?

这是男人或男孩测试计划代码:

(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解释器如何逐步评估此表达式.如果你可以附上环境图,那就更好了:)

lisp lambda scheme interpreter functional-programming

4
推荐指数
1
解决办法
144
查看次数