Blob
1 (define (double p)2 (lambda (x)3 (p (p x))))5 ;; What value is returned by7 ;; (((double (double double)) inc) 5)8 nn9 (((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 dd46 ;;(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)