Blob


1 (define (double p)
2 (lambda (x)
3 (p (p x))))
5 ;; What value is returned by
7 ;; (((double (double double)) inc) 5)
8 nn
9 (((double (double double)) inc) 5)
10 (((double (lambda (x)
11 (double (double x)))) inc) 5)
12 (((lambda (y)
13 ((lambda (x)
14 (double (double x)))
15 ((lambda (x)
16 (double (double x))) y))) inc) 5)
17 (((lambda (y)
18 ((lambda (x)
19 (double (double x)))
20 ((lambda (x)
21 (double (double x))) y))) inc) 5)
22 (((lambda (x)
23 (double (double x)))
24 ((lambda (x)
25 (double (double x))) inc)) 5)
26 (((lambda (x)
27 (double (double x)))
28 ((double (double inc)))) 5)
29 (((lambda (x)
30 (double (double x)))
31 ((double (double inc)))) 5)
32 (((lambda (x)
33 (double (double x)))
34 ((double (lambda (x)
35 (inc (inc x)))))) 5)
36 (((lambda (x)
37 (double (double x)))
38 ((double (lambda (x)
39 (inc (inc x)))))) 5)
40 (((lambda (x)
41 (double (double x)))
42 ((double (lambda (x)
43 (inc (inc x)))))) 5)
45 ;; Suppose we defined the procedure below as dd
46 ;;(lambda (x)
47 ;; (double (double x)))
48 (((lambda (x)
49 (dd (dd x))) inc) 5)
51 (((dd (dd inc))) 5)
52 (((dd (double (double inc)))) 5)
53 (((dd (double (lambda (x)
54 (inc (inc x)))))) 5)
55 (((dd ((lambda (x)
56 (inc (inc x)))
57 ((lambda (x)
58 (inc (inc x))) x)))) 5)
59 ((((double (double ((lambda (x)
60 (inc (inc x)))
61 ((lambda (x)
62 (inc (inc x))) x)))))) 5)