(define-struct cat (name age high?)) (define hyde (make-cat 'bartok 21 true)) (define imposter (make-cat 'bartok 21 true)) (define jekyll hyde) ;; age-cat!: cat --> (void) ;; (define (age-cat! meowser) (set-cat-age! meowser (add1 (cat-age meowser)))) hyde jekyll imposter (age-cat! hyde) hyde jekyll imposter ;;;;;; Review syntax, semantics, pragmatics. ;; Note the convention of "!" -- side-effects! (error 'to-do "To continue, go back and adapt the 'cat' structure to include a \"buddy\" field.") (list jekyll hyde imposter jekyll (make-cat 'morris 102 false (make-cat 'cleo 22 false imposter))) ;; (Note: set-first!, set-rest!) ;;;;;; A pragmatic: ;; (define-struct posn (x y)) (define-struct Rectangle (nw wide high)) (define-struct Circle (center radius)) (define origin (make-posn 0 0)) (define blocko (make-Rectangle origin 20 30)) (define blobbo (make-Circle origin 10)) ;; Two ways to move blocko's nw corner to (90,90): ;; (set-posn-x! (Rectangle-nw blocko) 90) (setRectangle-nw! blocko (make-posn 90 90)) ;;;;;; Structures within structures. (define cat2 (make-cat 'freddy-kruger 92 false hyde)) (set-cat-buddy! hyde cat2) ;; Go back and modify the function age-cat!, ;; so that older cats aren't still high on catnip.