;; The first three lines of this file were inserted by DrRacket. They record metadata ;; about the language level of this file in a form that our tools can easily process. #reader(lib "htdp-beginner-abbr-reader.ss" "lang")((modname week3_f_full) (read-case-sensitive #t) (teachpacks ((lib "image.ss" "teachpack" "2htdp"))) (htdp-settings #(#t constructor repeating-decimal #f #t none #f ((lib "image.ss" "teachpack" "2htdp"))))) ; A ftn is either ; - empty ; - (make-child symbol number symbol ftn ftn) (define-struct child (name date eyes mom dad)) ; template: ; (define (fun-for-ftn f) ; (cond [(empty? f) ...] ; [else ...(child-name f) ; ...(child-date f) ; ...(child-eyes f) ; ...(fun-for-ftn (child-mom f)) ; ...(fun-for-ftn (child-dad f)) ])) (define mary (make-child 'mary 1926 'brown empty empty)) (define peter (make-child 'peter 1926 'blue empty empty)) (define sarah (make-child 'sarah 1965 'green mary peter)) (define orville (make-child 'orville 1966 'orange empty empty)) (define gustav (make-child 'gustav 1990 'blue sarah orville)) ; blue-eyed-ancestor? : ftn -> boolean ; determines if there is a blue-eyed person in family tree (define (blue-eyed-ancestor? f) (cond [(empty? f) false] [else (or (symbol=? 'blue (child-eyes f)) (blue-eyed-ancestor? (child-mom f)) (blue-eyed-ancestor? (child-dad f))) ])) (check-expect (blue-eyed-ancestor? sarah) true) (check-expect (blue-eyed-ancestor? orville) false) ; template: ;; fun-for-ftn : ftn -> ??? ; (define (fun-for-ftn a-ftree) ; (cond ; [(empty? a-ftree) ...] ; [else ; ... (child-name a-ftree) ... ; ... (child-date a-ftree) ... ; ... (child-eyes a-ftree) ... ; ... (fun-for-ftn (child-dad a-ftree)) ... ; ... (fun-for-ftn (child-mom a-ftree)) ... ;])) ; -- remember to think about remove and append for homework #3....