(define (answer-for-3.1.1) '(let ([a 1]) (let ([b 2]) b))) (define (answer-for-3.1.2) '(let ([a 2]) (let ([b a]) b))) (define (answer-for-3.1.3) '(let ([a 2]) (let* ([b 8] [c b]) c))) (define (answer-for-3.1.4) '(let ([a (lambda (b) (b b))]) (a a))) (define (answer-for-3.1.5) '(letrec ([a (lambda (b) (b b))]) a)) (define (answer-for-3.1.6) '(letrec ([a (lambda (b) (a b))]) (let ([c (lambda (d) 10)] [e (lambda (f) (a f))]) (e 1)))) (define (answer-for-3.1.7) '(letrec ([a (lambda (b) (a b))]) (letrec ([c (lambda (d) 10)] [e (lambda (f) (c f))]) (e 1)))) (define (answer-for-3.2.1) '(z)) (define (answer-for-3.2.2) '(x y z)) (define (answer-for-3.2.3) '(z)) (define (answer-for-3.2.4) '()) (define (answer-for-3.2.5) '(z)) (define (answer-for-3.2.6) '(g f y)) (define (answer-for-3.2.7) '(g y)) (define (answer-for-3.2.8) '(y)) (define (answer-for-3.3.1) '(x y)) (define (answer-for-3.3.2) '(x y)) (define (answer-for-3.3.3) '(y)) (define (answer-for-3.3.4) '(z y)) (define (answer-for-3.3.5) '(x y)) (define (answer-for-3.3.6) '(x g)) (define (answer-for-3.3.7) '(f x g)) (define (answer-for-3.3.8) '(f x g)) (define-datatype expr expr? (number (val number?)) (id (val symbol?)) (plus (first expr?) (second expr?)) (let-val (id symbol?) (val expr?) (body expr?)) (let-func (id symbol?) (func-id symbol?) (func-expr expr?) (body expr?)) (app (rator symbol?) (rand expr?))) (define (answer-for-3.4.1) (number 1)) (define (answer-for-3.4.2) (id 'x)) (define (answer-for-3.4.3) (plus (number 1) (number 2))) (define (answer-for-3.4.5) (let-val 'x (number 5) (id 'x))) (define (answer-for-3.4.6) (let-val 'x (let-val 'x (number 2) (id 'x)) (id 'x)))