0

对于程序:

(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
4

1 回答 1

2

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

在此处输入图像描述

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

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

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

最后我点击了步进按钮。

于 2013-02-08T20:19:10.550 回答