More Exercises Solutions ------------------------- Exercise 1: (define pair-lists (lambda (l1 l2) (if (null? l1) nil (cons (list (car l1) (car l2)) (pair-lists (cdr l1) (cdr l2)))))) Exercise 2: Solution using append. Note the use of list. (define reverse (lambda (lst) (if (null? lst) nil (append (reverse (cdr lst)) (list (car lst)))))) Solution using helper procedure (define ireverse (lambda (lst) (ihelper lst nil))) (define ihelper (lambda (lst result) (if (null? lst) result (ihelper (cdr lst) (cons (car lst) result))))) Exercise 3: (define make-adder (lambda (n) (lambda (x) (+ x n)))) Exercise 4: (define recipricals (lambda (lst) (map (lambda (x) (/ 1 x)) lst))) Exercise 5: (define non-primes (lambda (lst) (filter (lambda (x) (not (prime? x))) lst))) Exercise 6: (define remove-duplicates (lambda (lst) (if (null? lst) nil (cons (car lst) (remove-duplicates (filter (cdr lst) (lambda (x) (not (= x (car lst))))))))))