方案替代模型

时间:2013-02-08 19:59:54

标签: scheme racket

程序:

(define (double fn) (lambda (x) (fn (fn x)))) 

致电:

(((double (double double)) 1+) 0)

这是否正确:

(double (lambda (x) (double (double x) 1+) 0))
        ((lambda (x) (double^4 x) 1+) 0)
                ((double^4 1+) 0)
                 (16+ 0)
                    16   

同样,在致电时:

(((((double double) double) double) 1+) 0)

这是否正确:

(((double double (double double) double) 1+) 0)
  (double (double (lambda (x) (double (double x) 1+) 0)))
    (double (lambda (x) (double^4 1+) 0))
            ((lambda (x) (double^16 x) 1+) 0)
                         ((double^16 1+) 0)
                              (256+ 0)
                                256

1 个答案:

答案 0 :(得分:2)

我会推荐DrRacket中的步进器。它允许您一次显示一个步骤。它甚至允许你回去。

enter image description here

首先,我选择了语言“HTDP:Advanced with lambda”。 然后我进入了这个程序:

(define (double fn) 
  (lambda (x) (fn (fn x))))

(((double (double double)) add1) 0)

最后我点击了步进按钮。