(define entering (lambda (test input cond-clause-number) (begin (if test (writeln " Entering cond-clause-" cond-clause-number " with tree = " input)) test))) (define leaving (lambda (result cond-clause-number) (begin (writeln "Leaving cond-clause-" cond-clause-number " with result = " result) result))) (DEFINE tdepth ; TYPE: (-> ((tree atomic-item)) number) (LAMBDA (tree) (COND [(entering (null? tree) tree 1) (leaving 0 1)] [(entering (pair? (car tree)) tree 2) (leaving (max (add1 (tdepth (car tree))) (tdepth (cdr tree))) 2)] [(entering #t tree 3) (leaving (max 1 (tdepth (cdr tree))) 3)] )))