*** tree-neg (omitted due to lack of time) -------------- (tree-neg '()) ==> () (tree-neg '(1 2 ())) ==> (-1 -2 ()) (tree-neg '(((5 ()) (7)) 9)) ==> (((-5 ()) (-7)) -9) tree-neg: (-> ((tree atomic-item)) (tree atomic-item)) -------------- have them work this in groups the idea of this is to capture the pattern base case: '() flat case: like copy (for lists) tree case (car of tr is a pair): want to get (tree-neg '((1 2) (3 4))) = '((-1 -2) (-3 -4)) from (tree-neg (car '((1 2) (3 4)))) = (tree-neg '(1 2)) = '(-1 -2) and (tree-neg (cdr '((1 2) (3 4)))) = (tree-neg '((3 4)) = '((-3 -4)) use cons (define tree-neg ; TYPE: (-> ((tree atomic-item)) ; (tree atomic-item)) (lambda (tr) (cond ((null? tr) '()) ((number? (car tr)) (cons (car tr) (tree-neg (cdr tr)))) (else (cons (tree-neg (car tr)) (tree-neg (cdr tr)))))))