;; update-year : ftnode string number -> ftnode ;; update year of named person in given tree (assume person in tree ;; at most once) ;; Test cases (check-expect (update-year 'unknown "Mary" 1981) unknown) (check-expect (update-year MaryTree "Mary" 1981) (make-person "Mary" 1981 'blue (make-person "Ann" 1960 'green 'unknown (make-person "Fred" 1936 'blue 'unknown 'unknown)) (make-person "Joe" 1960 'blue 'unknown 'unknown))) ;; update-year : ftnode string number -> ftnode ;; update year of named person in given tree (assume named person in tree ;; at most once) (define (update-year aft name birthyear) (cond [(symbol? aft) 'unknown] [(person? aft) (cond [(string=? (person-name aft) name) (make-person name birthyear (person-eye aft) (person-mother aft) (person-father aft))] [else (make-person (person-name aft) (person-year aft) (person-eye aft) (update-year (person-mother aft) name birthyear) (update-year (person-father aft) name birthyear))])]))