#reader(lib"read.ss""wxme")WXME0108 ## #| This file uses the GRacket editor format. Open this file in DrRacket version 5.3.6 or later to read it. Most likely, it was created by saving a program in DrRacket, and it probably contains a program with non-text elements (such as images or comment boxes). http://racket-lang.org/ |# 30 7 #"wxtext\0" 3 1 6 #"wxtab\0" 1 1 8 #"wximage\0" 2 0 8 #"wxmedia\0" 4 1 34 #"(lib \"syntax-browser.ss\" \"mrlib\")\0" 1 0 16 #"drscheme:number\0" 3 0 44 #"(lib \"number-snip.ss\" \"drscheme\" \"private\")\0" 1 0 36 #"(lib \"comment-snip.ss\" \"framework\")\0" 1 0 93 ( #"((lib \"collapsed-snipclass.ss\" \"framework\") (lib \"collapsed-sni" #"pclass-wxme.ss\" \"framework\"))\0" ) 0 0 43 #"(lib \"collapsed-snipclass.ss\" \"framework\")\0" 0 0 19 #"drscheme:sexp-snip\0" 0 0 36 #"(lib \"cache-image-snip.ss\" \"mrlib\")\0" 1 0 68 ( #"((lib \"image-core.ss\" \"mrlib\") (lib \"image-core-wxme.rkt\" \"mr" #"lib\"))\0" ) 1 0 29 #"drscheme:bindings-snipclass%\0" 1 0 88 ( #"((lib \"pict-snip.rkt\" \"drracket\" \"private\") (lib \"pict-snip.r" #"kt\" \"drracket\" \"private\"))\0" ) 0 0 33 #"(lib \"bullet-snip.ss\" \"browser\")\0" 0 0 25 #"(lib \"matrix.ss\" \"htdp\")\0" 1 0 22 #"drscheme:lambda-snip%\0" 1 0 26 #"drracket:spacer-snipclass\0" 0 0 57 #"(lib \"hrule-snip.rkt\" \"macro-debugger\" \"syntax-browser\")\0" 1 0 26 #"drscheme:pict-value-snip%\0" 0 0 45 #"(lib \"image-snipr.ss\" \"slideshow\" \"private\")\0" 1 0 38 #"(lib \"pict-snipclass.ss\" \"slideshow\")\0" 2 0 55 #"(lib \"vertical-separator-snip.ss\" \"stepper\" \"private\")\0" 1 0 18 #"drscheme:xml-snip\0" 1 0 31 #"(lib \"xml-snipclass.ss\" \"xml\")\0" 1 0 21 #"drscheme:scheme-snip\0" 2 0 34 #"(lib \"scheme-snipclass.ss\" \"xml\")\0" 1 0 10 #"text-box%\0" 1 0 32 #"(lib \"text-snipclass.ss\" \"xml\")\0" 1 0 1 6 #"wxloc\0" 0 0 124 0 1 #"\0" 0 75 1 #"\0" 0 10 90 -1 90 -1 3 -1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 255 255 255 1 -1 0 9 #"Standard\0" 0 75 12 #"Courier New\0" 0 14 90 -1 90 -1 3 -1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 255 255 255 1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 -1 -1 2 24 #"framework:default-color\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 150 0 150 0 0 0 -1 -1 2 15 #"text:ports out\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 150 0 150 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 93 -1 -1 -1 0 0 0 0 0 0 0 0 0 1.0 1.0 1.0 255 0 0 0 0 0 -1 -1 2 15 #"text:ports err\0" 0 -1 1 #"\0" 1.0 0 -1 -1 93 -1 -1 -1 0 0 0 0 0 0 0 0 0 1.0 1.0 1.0 255 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 175 0 0 0 -1 -1 2 17 #"text:ports value\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 175 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1.0 1.0 1.0 34 139 34 0 0 0 -1 -1 2 27 #"Matching Parenthesis Style\0" 0 -1 1 #"\0" 1.0 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1.0 1.0 1.0 34 139 34 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 38 38 128 0 0 0 -1 -1 2 37 #"framework:syntax-color:scheme:symbol\0" 0 -1 1 #"\0" 1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 38 38 128 0 0 0 -1 -1 2 38 #"framework:syntax-color:scheme:keyword\0" 0 -1 1 #"\0" 1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 38 38 128 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 128 64 0 0 0 0 -1 -1 2 38 #"framework:syntax-color:scheme:comment\0" 0 -1 1 #"\0" 1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 128 64 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 41 128 38 0 0 0 -1 -1 2 37 #"framework:syntax-color:scheme:string\0" 0 -1 1 #"\0" 1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 41 128 38 0 0 0 -1 -1 2 39 #"framework:syntax-color:scheme:constant\0" 0 -1 1 #"\0" 1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 41 128 38 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 132 60 36 0 0 0 -1 -1 2 49 #"framework:syntax-color:scheme:hash-colon-keyword\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 132 60 36 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 132 60 36 0 0 0 -1 -1 2 42 #"framework:syntax-color:scheme:parenthesis\0" 0 -1 1 #"\0" 1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 132 60 36 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 255 0 0 0 0 0 -1 -1 2 36 #"framework:syntax-color:scheme:error\0" 0 -1 1 #"\0" 1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 255 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 36 #"framework:syntax-color:scheme:other\0" 0 -1 1 #"\0" 1 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 16 #"Misspelled Text\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 81 112 203 0 0 0 -1 -1 2 38 #"drracket:check-syntax:lexically-bound\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 81 112 203 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 178 34 34 0 0 0 -1 -1 2 28 #"drracket:check-syntax:set!d\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 178 34 34 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 255 0 0 0 0 0 -1 -1 2 37 #"drracket:check-syntax:unused-require\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 255 0 0 0 0 0 -1 -1 2 36 #"drracket:check-syntax:free-variable\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 255 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 68 0 203 0 0 0 -1 -1 2 31 #"drracket:check-syntax:imported\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 68 0 203 0 0 0 -1 -1 2 47 #"drracket:check-syntax:my-obligation-style-pref\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 178 34 34 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 116 0 0 0 0 -1 -1 2 50 #"drracket:check-syntax:their-obligation-style-pref\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 116 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 48 #"drracket:check-syntax:unk-obligation-style-pref\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 139 142 28 0 0 0 -1 -1 2 49 #"drracket:check-syntax:both-obligation-style-pref\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 139 142 28 0 0 0 -1 -1 2 26 #"plt:htdp:test-coverage-on\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 1 0 0 0 0 0 0 255 165 0 0 0 0 -1 -1 2 27 #"plt:htdp:test-coverage-off\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 1 0 0 0 0 0 0 255 165 0 0 0 0 -1 -1 4 1 #"\0" 0 70 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 4 4 #"XML\0" 0 70 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 2 37 #"plt:module-language:test-coverage-on\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 38 #"plt:module-language:test-coverage-off\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 1 0 0 0 0 0 0 255 165 0 0 0 0 -1 -1 4 1 #"\0" 0 71 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 4 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 1 0 0 0 0 0 0 0 0 1.0 1.0 1.0 0 0 255 0 0 0 -1 -1 4 1 #"\0" 0 71 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 1 0 0 0 0 0 0 0 0 1.0 1.0 1.0 0 0 255 0 0 0 -1 -1 4 1 #"\0" 0 71 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1.0 1.0 1.0 0 100 0 0 0 0 -1 -1 0 1 #"\0" 0 75 12 #"Courier New\0" 0.0 14 90 -1 90 -1 3 -1 0 1 0 1 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 1 -1 4 1 #"\0" 0 71 1 #"\0" 1.0 0 -1 -1 93 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 255 0 0 0 0 0 -1 -1 2 1 #"\0" 0 70 1 #"\0" 1.0 0 -1 -1 93 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 148 0 211 0 0 0 -1 -1 2 1 #"\0" 0 70 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 1 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 0 0 255 0 0 0 -1 -1 2 1 #"\0" 0 71 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 2 1 #"\0" 0 71 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 0 100 0 0 0 0 -1 -1 17 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 -1 -1 24 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 -1 -1 46 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 -1 -1 48 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 -1 -1 4 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 1 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 1 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 65 105 225 0 0 0 -1 -1 0 1 #"\0" 0 75 1 #"\0" 0.0 12 90 -1 90 -1 3 -1 0 1 0 1 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 1 -1 0 1 #"\0" 0 75 12 #"Courier New\0" 0.0 19 90 -1 90 -1 3 -1 0 1 0 1 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 38 38 128 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 119 69 13 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 41 128 38 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 34 139 34 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 176 48 96 0 0 0 -1 -1 0 1 #"\0" 0 75 12 #"Courier New\0" 0.0 17 90 -1 90 -1 3 -1 0 1 0 1 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 1 -1 15 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 -1 -1 14 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 -1 -1 20 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 -1 -1 19 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 -1 -1 4 1 #"\0" 0 -1 1 #"\0" 1.0 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 1 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 0 -1 -1 0 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 0 -1 26 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 -1 -1 0 1 #"\0" 0 75 12 #"Courier New\0" 0.0 10 90 -1 90 -1 3 -1 0 1 0 1 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 194 116 31 0 0 0 -1 -1 8 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 255 0 0 0 0 0 -1 -1 8 24 #"drscheme:text:ports err\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 255 0 0 0 0 0 -1 -1 24 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 15 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 4 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 14 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 19 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 24 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 1 0.0 0.0 0.0 0.0 0.0 0.0 255 165 0 0 0 0 -1 -1 15 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 1 0.0 0.0 0.0 0.0 0.0 0.0 255 165 0 0 0 0 -1 -1 4 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 1 0.0 0.0 0.0 0.0 0.0 0.0 255 165 0 0 0 0 -1 -1 14 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 1 0.0 0.0 0.0 0.0 0.0 0.0 255 165 0 0 0 0 -1 -1 19 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 1 0.0 0.0 0.0 0.0 0.0 0.0 255 165 0 0 0 0 -1 -1 20 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 20 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 1 0.0 0.0 0.0 0.0 0.0 0.0 255 165 0 0 0 0 -1 -1 26 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 26 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 1 0.0 0.0 0.0 0.0 0.0 0.0 255 165 0 0 0 0 -1 -1 0 1 #"\0" 0 75 6 #"Arial\0" 0.0 12 90 -1 90 -1 3 -1 0 1 0 1 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 135 166 156 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 93 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 254 75 133 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 123 87 143 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 150 215 152 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 61 81 84 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 143 186 193 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 93 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 96 148 140 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 93 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 111 136 175 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 132 166 162 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 196 190 196 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 156 140 122 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 225 217 165 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 221 142 151 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 90 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 117 163 165 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 90 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 158 153 201 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 253 179 160 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 102 241 162 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 218 202 139 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 255 165 167 123 96 108 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 90 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 255 165 0 0 0 0 -1 -1 0 1851 0 4 3 85 ( #";; The first three lines of this file were inserted by DrRacket. The" #"y record metadata" ) 0 0 4 29 1 #"\n" 0 0 4 3 85 ( #";; about the language level of this file in a form that our tools ca" #"n easily process." ) 0 0 4 29 1 #"\n" 0 0 4 3 182 ( #"#reader(lib \"htdp-intermediate-lambda-reader.ss\" \"lang\")((modnam" #"e lab9) (read-case-sensitive #t) (teachpacks ()) (htdp-settings #(#t" #" constructor repeating-decimal #f #t none #f ())))" ) 0 0 4 29 1 #"\n" 0 0 17 3 2 #"#|" 0 0 17 29 1 #"\n" 0 0 17 29 1 #"\n" 0 0 17 3 15 #"A famous quote:" 0 0 17 29 1 #"\n" 0 0 17 3 1 #"\"" 0 0 17 3 6 #"Always" 0 0 17 3 1 #" " 0 0 17 3 4 #"code" 0 0 17 3 1 #" " 0 0 17 3 2 #"as" 0 0 17 3 1 #" " 0 0 17 3 2 #"if" 0 0 17 3 1 #" " 0 0 17 3 3 #"the" 0 0 17 3 1 #" " 0 0 17 3 3 #"guy" 0 0 17 3 1 #" " 0 0 17 3 3 #"who" 0 0 17 3 1 #" " 0 0 17 3 5 #"ends " 0 0 17 3 2 #"up" 0 0 17 3 1 #" " 0 0 17 3 11 #"maintaining" 0 0 17 3 1 #" " 0 0 17 3 4 #"your" 0 0 17 3 1 #" " 0 0 17 3 5 #"code " 0 0 17 3 4 #"will" 0 0 17 3 3 #" be" 0 0 17 3 1 #" " 0 0 17 3 1 #"a" 0 0 17 3 1 #" " 0 0 17 3 8 #"violent " 0 0 17 29 1 #"\n" 0 0 17 3 11 #"psychopath " 0 0 17 3 3 #"who" 0 0 17 3 1 #" " 0 0 17 3 6 #"knows " 0 0 17 3 5 #"where" 0 0 17 3 1 #" " 0 0 17 3 10 #"you live.\"" 0 0 17 29 1 #"\n" 0 0 17 29 1 #"\n" 0 0 17 3 18 #"What is debugging?" 0 0 17 29 1 #"\n" 0 0 17 3 58 #"A process of identifying and removing errors from software" 0 0 17 29 1 #"\n" 0 0 17 29 1 #"\n" 0 0 17 3 42 #"What's the origin of the term \"debugging\"?" 0 0 17 29 1 #"\n" 0 0 17 3 75 ( #"In the context of programming, the term \"debugging\" or \"bug\" was" #" coined by " ) 0 0 17 29 1 #"\n" 0 0 17 3 77 ( #"Admiral Grace Hopper aka \"Amazing Grace\"- an American computer sci" #"entist who " ) 0 0 17 29 1 #"\n" 0 0 17 3 74 ( #"developed one of the first compilers for a computer programming lang" #"uage. " ) 0 0 17 29 1 #"\n" 0 0 17 3 80 ( #"While she was working at Harvard University, her colleagues couldn't" #" figure out " ) 0 0 17 29 1 #"\n" 0 0 17 3 81 ( #"what was wrong with their programs until they found a moth that was " #"stuck inside " ) 0 0 17 29 1 #"\n" 0 0 17 3 48 #"the computer which was causing an interference. " 0 0 17 29 1 #"\n" 0 0 17 29 1 #"\n" 0 0 17 3 19 #"Why learn to debug?" 0 0 17 29 1 #"\n" 0 0 17 3 87 ( #"Unfortunately, many programmers fall into the trap of writing messy " #"code and forget to " ) 0 0 17 29 1 #"\n" 0 0 17 3 40 #"write purpose statements or good tests. " 0 0 17 3 48 #"Whether you are writing new code or maintaining " 0 0 17 29 1 #"\n" 0 0 17 3 93 ( #"someone else's code, you will most likely have to debug your own cod" #"e or someone else's code." ) 0 0 17 29 1 #"\n" 0 0 17 29 1 #"\n" 0 0 17 3 17 #"Let's get started" 0 0 17 29 1 #"\n" 0 0 17 3 86 ( #"In today's lab, we will focus on tackling messy code and popular mis" #"understandings as " ) 0 0 17 29 1 #"\n" 0 0 17 3 96 ( #"well as learn about common pitfalls that should be avoided when desi" #"gning and implementing code." ) 0 0 17 29 1 #"\n" 0 0 17 29 1 #"\n" 0 0 17 3 2 #"|#" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 2 #";;" 0 0 24 29 1 #"\n" 0 0 17 3 131 ( #"; ;;;;;;;;;;;;;;;;;;;; ;;; " #" ;;;;;;;;;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 131 ( #"; ;;;;;;;;;;;;;;;;;;;;;; ;;; " #" ;;;;;;;;;;;;;;;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 131 ( #"; ;;;;;;; ;;;;;;; ;;;; " #" ;;;;;;;; ;;;;;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 131 ( #"; ;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; ;;;;;;; ;;;; ;;;;;;;;;; " #" ;;;;;;;; ;;;;;;; ;;;;;;; ;;;;;;; ;;;;;;;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 131 ( #"; ;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;; " #" ;;;;;;;; ;;;;;;; ;;;;;;;;;;;;;;;; ;;;;;;;;;;;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 131 ( #"; ;;;;;;; ; ;;;;;;;;;; ;;;;; ;;;;; " #" ;;;;;;;; ;;;;;;; ;;;;; ;;;;; ;;;;;;;;;;;;;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 131 ( #"; ;;;;;;; ;;;;;; ;;;;; ;; ;;;;; ;;;;; ;;" #" ;;;;;;;; ;;;;;;; ;;;;; ;;;;; ;;;;;; ;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 131 ( #"; ;;;;;;;;;;;;; ;;;;;;;;;;;;;;;; ;;;;;;;;; ;;;;;;;; " #" ;;;;;;;;;;;;;;;;; ;;;;;;;;; ;;;;;;;; ;;;;;;;;;;;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 131 ( #"; ;;;;;;;;;;;;; ;;;;;; ;;;;;; ;;;;;;;;; ;;;;;; " #" ;;;;;;;;;;; ;;;;;;;;; ;;;;;;;; ;;;;;;;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 131 ( #"; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 131 ( #"; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 131 ( #"; " #" " ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 13 #"define-struct" 0 0 24 3 1 #" " 0 0 14 3 7 #"student" 0 0 24 3 2 #" (" 0 0 14 3 4 #"name" 0 0 24 3 1 #" " 0 0 14 3 2 #"id" 0 0 24 3 1 #" " 0 0 14 3 5 #"grade" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 17 3 53 #";; A Student is a (make-student String Number Number)" 0 0 24 29 1 #"\n" 0 0 17 3 47 #";; where name refers to the student's name and " 0 0 24 29 1 #"\n" 0 0 17 3 51 #";; the id refers to his/her school ID and the grade" 0 0 24 29 1 #"\n" 0 0 17 3 31 #";; refers to his/her exam grade" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 21 #";; Student -> Student" 0 0 24 29 1 #"\n" 0 0 17 3 49 #";; Checks if the given student is a high-achiever" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 2 #" (" 0 0 14 3 14 #"high-achiever?" 0 0 24 3 1 #" " 0 0 14 3 7 #"student" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 15 3 4 #"cond" 0 0 24 3 3 #" [(" 0 0 14 3 3 #"and" 0 0 24 3 2 #" (" 0 0 14 3 2 #">=" 0 0 24 3 2 #" (" 0 0 14 3 13 #"student-grade" 0 0 24 3 1 #" " 0 0 14 3 7 #"student" 0 0 24 3 2 #") " 0 0 20 3 2 #"90" 0 0 24 3 3 #") (" 0 0 14 3 2 #"<=" 0 0 24 3 2 #" (" 0 0 14 3 13 #"student-grade" 0 0 24 3 1 #" " 0 0 14 3 7 #"student" 0 0 24 3 2 #") " 0 0 20 3 3 #"100" 0 0 24 3 3 #")) " 0 0 14 3 4 #"true" 0 0 24 3 1 #"]" 0 0 24 29 1 #"\n" 0 0 24 3 9 #" [(" 0 0 14 3 1 #"<" 0 0 24 3 2 #" (" 0 0 14 3 13 #"student-grade" 0 0 24 3 1 #" " 0 0 14 3 7 #"student" 0 0 24 3 2 #") " 0 0 20 3 2 #"90" 0 0 24 3 2 #") " 0 0 14 3 5 #"false" 0 0 24 3 3 #"]))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 12 #"check-expect" 0 0 24 3 2 #" (" 0 0 14 3 14 #"high-achiever?" 0 0 24 3 2 #" (" 0 0 14 3 12 #"make-student" 0 0 24 3 1 #" " 0 0 19 3 15 #"\"Charlie Brown\"" 0 0 24 3 1 #" " 0 0 20 3 3 #"123" 0 0 24 3 1 #" " 0 0 20 3 2 #"74" 0 0 24 3 3 #")) " 0 0 14 3 5 #"false" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 12 #"check-expect" 0 0 24 3 2 #" (" 0 0 14 3 14 #"high-achiever?" 0 0 24 3 2 #" (" 0 0 14 3 12 #"make-student" 0 0 24 3 1 #" " 0 0 19 3 15 #"\"Lucy van Pelt\"" 0 0 24 3 1 #" " 0 0 20 3 3 #"456" 0 0 24 3 1 #" " 0 0 20 3 2 #"95" 0 0 24 3 3 #")) " 0 0 14 3 4 #"true" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 66 #";; Q1.1. What does student in (define-struct student...) refer to?" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 48 #";; Q1.2. What is Student with a capitalized \"S\"?" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 72 ( #";; Q1.3. What does student in (define (high-achiever? student) refer" #" to?" ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 94 ( #";; Q1.4. Can you improve the above code so that the conditional stat" #"ement is no longer needed?" ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 137 ( #"; ;;;;;;;;;;;;;;;;;;;; ;;; " #" ;;;;;;;;;;;;;;;;;;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 137 ( #"; ;;;;;;;;;;;;;;;;;;;;;; ;;; " #" ;;;;;;;;;;;;;;;;;;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 137 ( #"; ;;;;;;; ;;;;;;; ;;;; " #" ;;;;; ;;;;;;; ;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 137 ( #"; ;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; ;;;;;;; ;;;; ;;;;;;;;;; " #" ;;;;; ;;;;;;; ;;;;;;;;;;;;;;; ;;;;;;; ;;;;; ;;;;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 137 ( #"; ;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;; " #" ;;;;;;; ;;;;;;;;; ;;;;;;; ;;;;;; ;;;;;;;;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 137 ( #"; ;;;;;;; ; ;;;;;;;;;; ;;;;; ;;;;; " #" ;;;;;;; ;;;;;; ;;;;;;; ;;; ;;;;; ;;;;;" #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 137 ( #"; ;;;;;;; ;;;;;; ;;;;; ;; ;;;;; ;;;;; ;;" #" ;;;;;;; ;;;;;;;;;;;;;;;; ;;;;; ;;;;;" #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 137 ( #"; ;;;;;;;;;;;;; ;;;;;;;;;;;;;;;; ;;;;;;;;; ;;;;;;;; " #" ;;;;;;;;;;;; ;;;;;; ;;;;;; ;;;;;;;;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 137 ( #"; ;;;;;;;;;;;;; ;;;;;; ;;;;;; ;;;;;;;;; ;;;;;; " #" ;;;;;;;;;;;; ;;;; ;;;; ;;;;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 137 ( #"; " #" " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 137 ( #"; " #" " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 137 ( #"; " #" " #" " ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 86 ( #";; Your peer writes a function, draw-discs, that draws images of dis" #"cs (circles) onto " ) 0 0 24 29 1 #"\n" 0 0 17 3 74 ( #";; a scene. Although it functions correctly, the code has terrible s" #"tyle. " ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 13 #"define-struct" 0 0 24 3 1 #" " 0 0 14 3 4 #"disc" 0 0 24 3 2 #" (" 0 0 14 3 4 #"size" 0 0 24 3 1 #" " 0 0 14 3 5 #"color" 0 0 24 3 1 #" " 0 0 14 3 3 #"pos" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 17 3 46 #";; A Disc is a (make-disc number string Posn)." 0 0 24 29 1 #"\n" 0 0 17 3 56 #";; size and color refer to visual properties of the disc" 0 0 24 29 1 #"\n" 0 0 17 3 46 #";; and pos refers to its position on the scene" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 45 #";; [Listof Disc] [Listof Disc] Image -> Image" 0 0 24 29 1 #"\n" 0 0 17 3 58 #";; Draws the given list of discs onto the given background" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 2 #" (" 0 0 14 3 10 #"draw-discs" 0 0 24 3 1 #" " 0 0 14 3 4 #"lod1" 0 0 24 3 1 #" " 0 0 14 3 4 #"lod2" 0 0 24 3 1 #" " 0 0 14 3 2 #"bg" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 14 3 13 #"draw-helper10" 0 0 24 3 1 #" " 0 0 14 3 4 #"lod1" 0 0 24 3 2 #" (" 0 0 14 3 13 #"draw-helper10" 0 0 24 3 1 #" " 0 0 14 3 4 #"lod2" 0 0 24 3 1 #" " 0 0 14 3 2 #"bg" 0 0 24 3 3 #")))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 33 #";; [Listof Disc] -> [Listof Disc]" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 2 #" (" 0 0 14 3 13 #"draw-helper10" 0 0 24 3 1 #" " 0 0 14 3 3 #"lod" 0 0 24 3 1 #" " 0 0 14 3 2 #"bg" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 15 3 4 #"cond" 0 0 24 3 1 #" " 0 0 24 29 1 #"\n" 0 0 24 3 6 #" [(" 0 0 14 3 5 #"cons?" 0 0 24 3 1 #" " 0 0 14 3 3 #"lod" 0 0 24 3 3 #") (" 0 0 14 3 11 #"place-image" 0 0 24 3 2 #" (" 0 0 14 3 12 #"draw-helper3" 0 0 24 3 2 #" (" 0 0 14 3 5 #"first" 0 0 24 3 1 #" " 0 0 14 3 3 #"lod" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 30 #" (" 0 0 14 3 6 #"posn-x" 0 0 24 3 2 #" (" 0 0 14 3 8 #"disc-pos" 0 0 24 3 2 #" (" 0 0 14 3 5 #"first" 0 0 24 3 1 #" " 0 0 14 3 3 #"lod" 0 0 24 3 3 #")))" 0 0 24 29 1 #"\n" 0 0 24 3 30 #" (" 0 0 14 3 6 #"posn-y" 0 0 24 3 2 #" (" 0 0 14 3 8 #"disc-pos" 0 0 24 3 2 #" (" 0 0 14 3 5 #"first" 0 0 24 3 1 #" " 0 0 14 3 3 #"lod" 0 0 24 3 3 #")))" 0 0 24 29 1 #"\n" 0 0 24 3 30 #" (" 0 0 14 3 13 #"draw-helper10" 0 0 24 3 2 #" (" 0 0 14 3 4 #"rest" 0 0 24 3 1 #" " 0 0 14 3 3 #"lod" 0 0 24 3 2 #") " 0 0 14 3 2 #"bg" 0 0 24 3 3 #"))]" 0 0 24 29 1 #"\n" 0 0 24 3 6 #" [(" 0 0 14 3 6 #"empty?" 0 0 24 3 1 #" " 0 0 14 3 3 #"lod" 0 0 24 3 2 #") " 0 0 14 3 2 #"bg" 0 0 24 3 4 #"])) " 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 16 #";; Disc -> Image" 0 0 24 29 1 #"\n" 0 0 17 3 17 #";; Draws the disc" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 2 #" (" 0 0 14 3 12 #"draw-helper3" 0 0 24 3 1 #" " 0 0 14 3 3 #"lod" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 14 3 6 #"circle" 0 0 24 3 2 #" (" 0 0 14 3 9 #"disc-size" 0 0 24 3 1 #" " 0 0 14 3 3 #"lod" 0 0 24 3 2 #") " 0 0 19 3 7 #"\"solid\"" 0 0 24 3 2 #" (" 0 0 14 3 10 #"disc-color" 0 0 24 3 1 #" " 0 0 14 3 3 #"lod" 0 0 24 3 3 #")))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 1 #" " 0 0 14 3 2 #"d1" 0 0 24 3 2 #" (" 0 0 14 3 9 #"make-disc" 0 0 24 3 1 #" " 0 0 20 3 1 #"5" 0 0 24 3 1 #" " 0 0 19 3 5 #"\"red\"" 0 0 24 3 2 #" (" 0 0 14 3 9 #"make-posn" 0 0 24 3 1 #" " 0 0 20 3 2 #"10" 0 0 24 3 1 #" " 0 0 20 3 2 #"10" 0 0 24 3 3 #")))" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 1 #" " 0 0 14 3 2 #"d2" 0 0 24 3 2 #" (" 0 0 14 3 9 #"make-disc" 0 0 24 3 1 #" " 0 0 20 3 1 #"4" 0 0 24 3 1 #" " 0 0 19 3 5 #"\"red\"" 0 0 24 3 2 #" (" 0 0 14 3 9 #"make-posn" 0 0 24 3 1 #" " 0 0 20 3 2 #"20" 0 0 24 3 1 #" " 0 0 20 3 2 #"20" 0 0 24 3 3 #")))" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 1 #" " 0 0 14 3 2 #"d3" 0 0 24 3 2 #" (" 0 0 14 3 9 #"make-disc" 0 0 24 3 1 #" " 0 0 20 3 1 #"3" 0 0 24 3 1 #" " 0 0 19 3 5 #"\"red\"" 0 0 24 3 2 #" (" 0 0 14 3 9 #"make-posn" 0 0 24 3 1 #" " 0 0 20 3 2 #"30" 0 0 24 3 1 #" " 0 0 20 3 2 #"30" 0 0 24 3 3 #")))" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 1 #" " 0 0 14 3 2 #"d4" 0 0 24 3 2 #" (" 0 0 14 3 9 #"make-disc" 0 0 24 3 1 #" " 0 0 20 3 1 #"6" 0 0 24 3 1 #" " 0 0 19 3 6 #"\"blue\"" 0 0 24 3 2 #" (" 0 0 14 3 9 #"make-posn" 0 0 24 3 1 #" " 0 0 20 3 2 #"10" 0 0 24 3 1 #" " 0 0 20 3 1 #"5" 0 0 24 3 3 #")))" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 12 #"check-expect" 0 0 24 3 2 #" (" 0 0 14 3 10 #"draw-discs" 0 0 24 3 2 #" (" 0 0 14 3 4 #"list" 0 0 24 3 1 #" " 0 0 14 3 2 #"d1" 0 0 24 3 1 #" " 0 0 14 3 2 #"d2" 0 0 24 3 1 #" " 0 0 14 3 2 #"d3" 0 0 24 3 3 #") (" 0 0 14 3 4 #"list" 0 0 24 3 1 #" " 0 0 14 3 2 #"d4" 0 0 24 3 3 #") (" 0 0 14 3 11 #"empty-scene" 0 0 24 3 1 #" " 0 0 20 3 3 #"100" 0 0 24 3 1 #" " 0 0 20 3 3 #"100" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 14 #" (" 0 0 14 3 11 #"place-image" 0 0 24 3 2 #" (" 0 0 14 3 6 #"circle" 0 0 24 3 1 #" " 0 0 20 3 1 #"5" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"solid\"" 0 0 24 3 1 #" " 0 0 19 3 5 #"\"red\"" 0 0 24 3 2 #") " 0 0 20 3 2 #"10" 0 0 24 3 1 #" " 0 0 20 3 2 #"10" 0 0 24 3 1 #" " 0 0 24 29 1 #"\n" 0 0 24 3 26 #" (" 0 0 14 3 11 #"place-image" 0 0 24 3 2 #" (" 0 0 14 3 6 #"circle" 0 0 24 3 1 #" " 0 0 20 3 1 #"4" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"solid\"" 0 0 24 3 1 #" " 0 0 19 3 5 #"\"red\"" 0 0 24 3 2 #") " 0 0 20 3 2 #"20" 0 0 24 3 1 #" " 0 0 20 3 2 #"20" 0 0 24 29 1 #"\n" 0 0 24 3 38 #" (" 0 0 14 3 11 #"place-image" 0 0 24 3 2 #" (" 0 0 14 3 6 #"circle" 0 0 24 3 1 #" " 0 0 20 3 1 #"3" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"solid\"" 0 0 24 3 1 #" " 0 0 19 3 5 #"\"red\"" 0 0 24 3 2 #") " 0 0 20 3 2 #"30" 0 0 24 3 1 #" " 0 0 20 3 2 #"30" 0 0 24 3 1 #" " 0 0 24 29 1 #"\n" 0 0 24 3 50 #" (" 0 0 14 3 11 #"place-image" 0 0 24 3 2 #" (" 0 0 14 3 6 #"circle" 0 0 24 3 1 #" " 0 0 20 3 1 #"6" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"solid\"" 0 0 24 3 1 #" " 0 0 19 3 6 #"\"blue\"" 0 0 24 3 2 #") " 0 0 20 3 2 #"10" 0 0 24 3 1 #" " 0 0 20 3 1 #"5" 0 0 24 29 1 #"\n" 0 0 24 3 62 #" (" 0 0 14 3 11 #"empty-scene" 0 0 24 3 1 #" " 0 0 20 3 3 #"100" 0 0 24 3 1 #" " 0 0 20 3 3 #"100" 0 0 24 3 6 #"))))))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 12 #";; Practice:" 0 0 24 29 1 #"\n" 0 0 17 3 95 ( #";; The test given to you is correct. But the code has terrible funct" #"ion names and input names. " ) 0 0 24 29 1 #"\n" 0 0 17 3 43 #";; Let's try to make the code more readable" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 117 ( #";; Q3.1 Fix bad function names and input names (e.g. draw-helperX is" #" a terrible function name, can you improve it?). " ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 58 #";; Remember to also change the function names in the test." 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 82 ( #";; Q3.2 There are bad signatures and missing purpose statements. Can" #" you fix them?" ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 99 ( #";; Q3.3 Why does the following function blow up when you try to run " #"it on the test? Can you fix it?" ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 53 #";; get-disc-sizes: [List-of Disc] -> [List-of Number]" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 33 #";; Returns the sizes of the discs" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 2 #"#;" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 2 #" (" 0 0 14 3 14 #"get-disc-sizes" 0 0 24 3 1 #" " 0 0 14 3 3 #"lod" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 15 3 5 #"local" 0 0 24 3 3 #" [(" 0 0 15 3 6 #"define" 0 0 24 3 1 #" " 0 0 14 3 4 #"size" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 13 #" (" 0 0 14 3 9 #"disc-size" 0 0 24 3 2 #" (" 0 0 14 3 5 #"first" 0 0 24 3 1 #" " 0 0 14 3 3 #"lod" 0 0 24 3 4 #")))]" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 5 #" (" 0 0 15 3 4 #"cond" 0 0 24 3 1 #" " 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 8 #" [(" 0 0 14 3 5 #"cons?" 0 0 24 3 1 #" " 0 0 14 3 3 #"lod" 0 0 24 3 3 #") (" 0 0 14 3 4 #"cons" 0 0 24 3 1 #" " 0 0 14 3 4 #"size" 0 0 24 3 3 #" (" 0 0 14 3 14 #"get-disc-sizes" 0 0 24 3 2 #" (" 0 0 14 3 4 #"rest" 0 0 24 3 1 #" " 0 0 14 3 3 #"lod" 0 0 24 3 4 #")))]" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 8 #" [(" 0 0 14 3 6 #"empty?" 0 0 24 3 1 #" " 0 0 14 3 3 #"lod" 0 0 24 3 2 #") " 0 0 14 3 5 #"empty" 0 0 24 3 4 #"])))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 2 #"#;" 0 0 24 3 1 #"(" 0 0 14 3 12 #"check-expect" 0 0 24 3 2 #" (" 0 0 14 3 14 #"get-disc-sizes" 0 0 24 3 2 #" (" 0 0 14 3 4 #"list" 0 0 24 3 1 #" " 0 0 14 3 2 #"d1" 0 0 24 3 1 #" " 0 0 14 3 2 #"d2" 0 0 24 3 1 #" " 0 0 14 3 2 #"d3" 0 0 24 3 1 #" " 0 0 14 3 2 #"d4" 0 0 24 3 4 #")) (" 0 0 14 3 4 #"list" 0 0 24 3 1 #" " 0 0 20 3 1 #"5" 0 0 24 3 1 #" " 0 0 20 3 1 #"4" 0 0 24 3 1 #" " 0 0 20 3 1 #"3" 0 0 24 3 1 #" " 0 0 20 3 1 #"6" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 162 ( #"; ;;;;;;;;;;;;;;;;;;;; ;;; " #" ;;;;;;;;;;;;;;;;;;;;;; ;;;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 162 ( #"; ;;;;;;;;;;;;;;;;;;;;;; ;;; " #" ;;;;;;;;;;;;;;;;;;;;;; ;;;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 162 ( #"; ;;;;;;; ;;;;;;; ;;;; " #" ;;;;; ;;;;;;; ;;;;; ;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 162 ( #"; ;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; ;;;;;;; ;;;; ;;;;;;;;;; " #" ;;;;; ;;;;;;; ;;;;; ;;;;; ;;;;;;; ;;;;;;; ;;;; ;;;" #";;;;;; ;;;;;;;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 162 ( #"; ;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;; " #" ;;;;;;; ;;;;;;;;;;;;;; ;;;;;;;;;;;;; ;;;;;" #";;;;;;;; ;;;;;;;;;;;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 162 ( #"; ;;;;;;; ; ;;;;;;;;;; ;;;;; ;;;;; " #" ;;;;;;; ;;;;; ;;;;; ;;;;; ;;;;;;" #";;;;;;;;; ;;;;;;;;;;;;;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 162 ( #"; ;;;;;;; ;;;;;; ;;;;; ;; ;;;;; ;;;;; ;;" #" ;;;;;;; ;;;;; ;;;;; ;;;;; ;;;;;;" #" ;;; ;;;;;; ;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 162 ( #"; ;;;;;;;;;;;;; ;;;;;;;;;;;;;;;; ;;;;;;;;; ;;;;;;;; " #" ;;;;;;;;;;;; ;;;;;;;;; ;;;;;;;; ;;;;;;;;; ;;;;;" #";;;;;;;; ;;;;;;;;;;;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 162 ( #"; ;;;;;;;;;;;;; ;;;;;; ;;;;;; ;;;;;;;;; ;;;;;; " #" ;;;;;;;;;;;; ;;;;;;;;; ;;;;;;;; ;;;;;;;;; ;;;" #";;;;;; ;;;;;;;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 162 ( #"; " #" " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 162 ( #"; " #" " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 162 ( #"; " #" " #" " ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 78 ( #";; An employee was asked to write a function, place-balls, which is " #"given the " ) 0 0 24 29 1 #"\n" 0 0 17 3 11 #";; position" 0 0 17 3 1 #" " 0 0 17 3 2 #"of" 0 0 17 3 1 #" " 0 0 17 3 1 #"a" 0 0 17 3 1 #" " 0 0 17 3 3 #"red" 0 0 17 3 1 #" " 0 0 17 3 4 #"ball" 0 0 17 3 1 #" " 0 0 17 3 3 #"and" 0 0 17 3 1 #" " 0 0 17 3 3 #"the" 0 0 17 3 1 #" " 0 0 17 3 9 #"positions" 0 0 17 3 1 #" " 0 0 17 3 2 #"of" 0 0 17 3 1 #" " 0 0 17 3 11 #"a blue ball" 0 0 24 29 1 #"\n" 0 0 17 3 79 ( #";; and should produce an image of the red ball and blue ball joined " #"by a black " ) 0 0 24 29 1 #"\n" 0 0 17 3 7 #";; line" 0 0 17 3 1 #" " 0 0 17 3 4 #"with" 0 0 17 3 1 #" " 0 0 17 3 1 #"a" 0 0 17 3 1 #" " 0 0 17 3 6 #"purple" 0 0 17 3 1 #" " 0 0 17 3 4 #"ball" 0 0 17 3 1 #" " 0 0 17 3 6 #"placed" 0 0 17 3 1 #" " 0 0 17 3 13 #"in the middle" 0 0 24 29 1 #"\n" 0 0 17 3 82 ( #";; and a green ball placed 3/4 of the distance between red and blue " #"from the red. " ) 0 0 24 29 1 #"\n" 0 0 17 3 22 #";; Here is an example:" 0 0 24 29 1 #"\n" 0 0 17 3 2 #";;" 0 12 4 17 1711 ( #"(#(struct:crop (#(struct:point 0 0) #(struct:point 200 0) #(struct:p" #"oint 200 250) #(struct:point 0 250)) #(struct:translate 0 0 #(struct" #":overlay #(struct:translate 10 10 #(struct:translate 10 10 #(struct:" #"ellipse 20 20 0 255 \"red\"))) #(struct:translate 0 0 #(struct:crop " #"(#(struct:point 0 0) #(struct:point 200 0) #(struct:point 200 250) #" #"(struct:point 0 250)) #(struct:translate 0 0 #(struct:overlay #(stru" #"ct:translate 90 90 #(struct:translate 10 10 #(struct:ellipse 20 20 0" #" 255 \"blue\"))) #(struct:translate 0 0 #(struct:crop (#(struct:poin" #"t 0 0) #(struct:point 200 0) #(struct:point 200 250) #(struct:point " #"0 250)) #(struct:translate 0 0 #(struct:overlay #(struct:translate 7" #"0 70 #(struct:translate 10 10 #(struct:ellipse 20 20 0 255 \"green\"" #"))) #(struct:translate 0 0 #(struct:crop (#(struct:point 0 0) #(stru" #"ct:point 200 0) #(struct:point 200 250) #(struct:point 0 250)) #(str" #"uct:translate 0 0 #(struct:overlay #(struct:translate 50 50 #(struct" #":translate 10 10 #(struct:ellipse 20 20 0 255 \"purple\"))) #(struct" #":translate 0 0 #(struct:translate 0 0 #(struct:overlay #(struct:line" #"-segment #(struct:point 100 100) #(struct:point 20 20) \"black\") #(" #"struct:crop (#(struct:point 0 0) #(struct:point 200 0) #(struct:poin" #"t 200 250) #(struct:point 0 250)) #(struct:translate 0 0 #(struct:ov" #"erlay #(struct:translate 0 0 #(struct:translate 0 0 #(struct:polygon" #" (#(struct:point 0 0) #(struct:point 200 0) #(struct:point 200 250) " #"#(struct:point 0 250)) outline #(struct:pen \"black\" 2 solid round " #"round)))) #(struct:translate 0 0 #(struct:translate 0 0 #(struct:pol" #"ygon (#(struct:point 0 0) #(struct:point 200 0) #(struct:point 200 2" #"50) #(struct:point 0 250)) 255 \"white\")))))))))))))))))))))))) #(s" #"truct:bb 200 250 250) #f)" ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 99 ( #";; Your boss finds out that this employee was writing terrible code " #"and decides to hand you the job" ) 0 0 24 29 1 #"\n" 0 0 17 3 40 #";; of fixing his mess. Here is his code:" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 7 #"require" 0 0 24 3 1 #" " 0 0 14 3 11 #"2htdp/image" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 1 #" " 0 0 14 3 8 #"RED-ball" 0 0 24 3 2 #" (" 0 0 14 3 6 #"circle" 0 0 24 3 1 #" " 0 0 20 3 2 #"10" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"solid\"" 0 0 24 3 1 #" " 0 0 19 3 5 #"\"red\"" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 17 3 20 #";posn Posn -> images" 0 0 24 29 1 #"\n" 0 0 17 3 94 ( #";Takes 2 posns and places a red ball and a blue ball at two seperate" #" coord with a line running" ) 0 0 24 29 1 #"\n" 0 0 17 3 99 ( #";between them and a green ball on that line that is 10% closer to th" #"e red ball and draws that image" ) 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 2 #" (" 0 0 14 3 11 #"place-balls" 0 0 24 3 1 #" " 0 0 14 3 3 #"red" 0 0 24 3 1 #" " 0 0 14 3 4 #"blue" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 14 3 11 #"place-image" 0 0 24 3 1 #" " 0 0 14 3 8 #"RED-ball" 0 0 24 29 1 #"\n" 0 0 24 3 15 #" (" 0 0 14 3 6 #"posn-x" 0 0 24 3 1 #" " 0 0 14 3 3 #"red" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 15 #" (" 0 0 14 3 6 #"posn-y" 0 0 24 3 1 #" " 0 0 14 3 3 #"red" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 15 #" (" 0 0 14 3 11 #"place-image" 0 0 24 3 2 #" (" 0 0 14 3 6 #"circle" 0 0 24 3 1 #" " 0 0 20 3 2 #"10" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"solid\"" 0 0 24 3 1 #" " 0 0 19 3 6 #"\"blue\"" 0 0 24 3 3 #") (" 0 0 14 3 6 #"posn-x" 0 0 24 3 1 #" " 0 0 14 3 4 #"blue" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 27 #" (" 0 0 14 3 6 #"posn-y" 0 0 24 3 1 #" " 0 0 14 3 4 #"blue" 0 0 24 3 3 #") (" 0 0 14 3 11 #"place-image" 0 0 24 3 2 #" (" 0 0 14 3 6 #"circle" 0 0 24 3 1 #" " 0 0 20 3 2 #"10" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"solid\"" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"green\"" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 53 #" (" 0 0 14 3 1 #"+" 0 0 24 3 2 #" (" 0 0 14 3 1 #"*" 0 0 24 3 1 #" " 0 0 20 3 3 #".75" 0 0 24 3 2 #" (" 0 0 14 3 1 #"-" 0 0 24 3 2 #" (" 0 0 14 3 6 #"posn-x" 0 0 24 3 1 #" " 0 0 14 3 4 #"blue" 0 0 24 3 3 #") (" 0 0 14 3 6 #"posn-x" 0 0 24 3 1 #" " 0 0 14 3 3 #"red" 0 0 24 3 3 #")))" 0 0 24 29 1 #"\n" 0 0 24 3 55 #" (" 0 0 14 3 6 #"posn-x" 0 0 24 3 1 #" " 0 0 14 3 3 #"red" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 53 #" (" 0 0 14 3 1 #"+" 0 0 24 3 2 #" (" 0 0 14 3 1 #"*" 0 0 24 3 1 #" " 0 0 20 3 2 #".5" 0 0 24 3 2 #" (" 0 0 14 3 1 #"-" 0 0 24 3 2 #" (" 0 0 14 3 6 #"posn-y" 0 0 24 3 1 #" " 0 0 14 3 4 #"blue" 0 0 24 3 2 #") " 0 0 24 29 1 #"\n" 0 0 24 3 65 #" (" 0 0 14 3 6 #"posn-y" 0 0 24 3 1 #" " 0 0 14 3 3 #"red" 0 0 24 3 4 #"))) " 0 0 24 29 1 #"\n" 0 0 24 3 55 #" (" 0 0 14 3 6 #"posn-y" 0 0 24 3 1 #" " 0 0 14 3 3 #"red" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 53 #" (" 0 0 14 3 11 #"place-image" 0 0 24 3 2 #" (" 0 0 14 3 6 #"circle" 0 0 24 3 1 #" " 0 0 20 3 2 #"10" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"solid\"" 0 0 24 3 1 #" " 0 0 19 3 8 #"\"purple\"" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 65 #" (" 0 0 14 3 1 #"+" 0 0 24 3 2 #" (" 0 0 14 3 1 #"*" 0 0 24 3 1 #" " 0 0 20 3 3 #".75" 0 0 24 3 2 #" (" 0 0 14 3 1 #"-" 0 0 24 3 2 #" (" 0 0 14 3 6 #"posn-x" 0 0 24 3 1 #" " 0 0 14 3 4 #"blue" 0 0 24 3 3 #") (" 0 0 14 3 6 #"posn-x" 0 0 24 3 1 #" " 0 0 14 3 3 #"red" 0 0 24 3 5 #"))) (" 0 0 14 3 6 #"posn-x" 0 0 24 3 1 #" " 0 0 14 3 3 #"red" 0 0 24 3 4 #")) (" 0 0 14 3 1 #"+" 0 0 24 3 2 #" (" 0 0 14 3 1 #"*" 0 0 24 3 1 #" " 0 0 20 3 2 #".5" 0 0 24 3 2 #" (" 0 0 14 3 1 #"-" 0 0 24 3 2 #" (" 0 0 14 3 6 #"posn-y" 0 0 24 3 1 #" " 0 0 14 3 4 #"blue" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 131 ( #" " #" (" ) 0 0 14 3 6 #"posn-y" 0 0 24 3 1 #" " 0 0 14 3 3 #"red" 0 0 24 3 5 #"))) (" 0 0 14 3 6 #"posn-y" 0 0 24 3 1 #" " 0 0 14 3 3 #"red" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 65 #" (" 0 0 14 3 8 #"add-line" 0 0 24 3 2 #" (" 0 0 14 3 11 #"empty-scene" 0 0 24 3 1 #" " 0 0 20 3 3 #"200" 0 0 24 3 1 #" " 0 0 20 3 3 #"250" 0 0 24 3 3 #") (" 0 0 14 3 6 #"posn-x" 0 0 24 3 1 #" " 0 0 14 3 4 #"blue" 0 0 24 3 2 #") " 0 0 24 29 1 #"\n" 0 0 24 3 74 ( #" " #" (" ) 0 0 14 3 6 #"posn-y" 0 0 24 3 1 #" " 0 0 14 3 4 #"blue" 0 0 24 3 3 #") (" 0 0 14 3 6 #"posn-x" 0 0 24 3 1 #" " 0 0 14 3 3 #"red" 0 0 24 3 3 #") (" 0 0 14 3 6 #"posn-y" 0 0 24 3 1 #" " 0 0 14 3 3 #"red" 0 0 24 3 2 #") " 0 0 19 3 7 #"\"black\"" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 53 #" )" 0 0 24 29 1 #"\n" 0 0 24 3 29 #" )))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 12 #";; Practice:" 0 0 24 29 1 #"\n" 0 0 17 3 55 #";; Let's try to fix his code. Here are some guidelines:" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 93 ( #";; Q2.1. Write a test for the function so that you are certain about" #" what it should produce. " ) 0 0 24 29 1 #"\n" 0 0 17 3 8 #";; Hint:" 0 0 17 3 1 #" " 0 0 17 3 4 #"make" 0 0 17 3 1 #" " 0 0 17 3 1 #"a" 0 0 17 3 1 #" " 0 0 17 3 4 #"very" 0 0 17 3 1 #" " 0 0 17 3 6 #"simple" 0 0 17 3 1 #" " 0 0 17 3 31 #"test where the balls are placed" 0 0 24 29 1 #"\n" 0 0 17 3 73 ( #";; on a horizontal line e.g. red is on (0, 50) and blue is on (100, " #"50). " ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 93 ( #"; ; Q2.2. Start by reindenting the code (reminder: ctrl+i and cmd+i)" #" then go through the code" ) 0 0 24 29 1 #"\n" 0 0 17 3 41 #";; and format it so that it looks clearer" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 76 ( #";; Q2.3. Fix the \"magic\" numbers e.g. .1, 200, 250, 10. Hint: use " #"constants!" ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 72 ( #";; Q2.4. Is the constant name RED-ball appropriate? Can you improve" #" it?" ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 39 #";; Q2.5. Can you correct the signature?" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 47 #";; Q2.6. Can you improve the purpose statement?" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 102 ( #";; Q2.7. Do you see any repetitions in the code? Can you abstract th" #"ose and make it a helper function?" ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 44 #";; Q2.8 Can you fix a silly bug in the code?" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 145 ( #"; ;;;;;;;;;;;;;;;;;;;; ;;; " #" ;;;;;;;;;;;;;;;;;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 145 ( #"; ;;;;;;;;;;;;;;;;;;;;;; ;;; " #" ;;;;;;;;;;;;;;;;;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 145 ( #"; ;;;;;;; ;;;;;;; ;;;; " #" ;;;;;;; ;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 145 ( #"; ;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; ;;;;;;; ;;;; ;;;;;;;;;; " #" ;;;;;;; ;;;;; ;;;;;;;; ;;;;;;; ;;;;;;;; ;;;;" #";;; ;;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 145 ( #"; ;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;; " #" ;;;;;;;;;;; ;;;;;;;;;;;; ;;;;;;; ;;;;;;;; ;;;;" #";;;;;;;;;" ) 0 0 24 29 1 #"\n" 0 0 17 3 145 ( #"; ;;;;;;; ; ;;;;;;;;;; ;;;;; ;;;;; " #" ;;;;;;;;;;; ;;;;; ;;;;; ;;;;; ;;;;; ;;" #";;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 145 ( #"; ;;;;;;; ;;;;;; ;;;;; ;; ;;;;; ;;;;; ;;" #" ;;;;;;; ;;;;; ;;;;; ;;;;; ;;;;; ;;" #";;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 145 ( #"; ;;;;;;;;;;;;; ;;;;;;;;;;;;;;;; ;;;;;;;;; ;;;;;;;; " #" ;;;;;;;;;;;; ;;;;;;;;;;;; ;;;;;;;;;;;;;;;;; ;;;;" #";;;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 145 ( #"; ;;;;;;;;;;;;; ;;;;;; ;;;;;; ;;;;;;;;; ;;;;;; " #" ;;;;;;;;;;;; ;;;;;;;; ;;;;;;; ;;;;;;; ;;;;" #";;;;; " ) 0 0 24 29 1 #"\n" 0 0 17 3 145 ( #"; " #" " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 145 ( #"; " #" " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 145 ( #"; " #" " #" " ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 70 ( #";; Your friend has just learned how to make functions local, however" #", " ) 0 0 24 29 1 #"\n" 0 0 17 3 81 ( #";; he places local functions in places that make the function confus" #"ing to read. " ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 13 #"define-struct" 0 0 24 3 1 #" " 0 0 14 3 6 #"outfit" 0 0 24 3 2 #" (" 0 0 14 3 6 #"blazer" 0 0 24 3 1 #" " 0 0 14 3 5 #"pants" 0 0 24 3 1 #" " 0 0 14 3 5 #"shirt" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 17 3 51 #";; An Outfit is a (make-outfit Blazer Pants Shirt))" 0 0 24 29 1 #"\n" 0 0 17 3 68 #";; in which each outfit consists of matching blazer, pants and shirt" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 13 #"define-struct" 0 0 24 3 1 #" " 0 0 14 3 6 #"blazer" 0 0 24 3 2 #" (" 0 0 14 3 4 #"size" 0 0 24 3 1 #" " 0 0 14 3 5 #"color" 0 0 24 3 1 #" " 0 0 14 3 7 #"padded?" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 17 3 50 #";; A Blazer is a (make-blazer Size String Boolean)" 0 0 24 29 1 #"\n" 0 0 17 3 60 #";; where size and color refers to its appearance and padded?" 0 0 24 29 1 #"\n" 0 0 17 3 54 #";; refers to whether or not the shoulders contain pads" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 13 #"define-struct" 0 0 24 3 1 #" " 0 0 14 3 5 #"pants" 0 0 24 3 2 #" (" 0 0 14 3 4 #"size" 0 0 24 3 1 #" " 0 0 14 3 5 #"color" 0 0 24 3 1 #" " 0 0 14 3 6 #"length" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 17 3 50 #";; A Pants is a (make-pants Number String Number))" 0 0 24 29 1 #"\n" 0 0 17 3 56 #";; where size, color and length refers to its appearance" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 13 #"define-struct" 0 0 24 3 1 #" " 0 0 14 3 5 #"shirt" 0 0 24 3 2 #" (" 0 0 14 3 4 #"size" 0 0 24 3 1 #" " 0 0 14 3 5 #"color" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 17 3 42 #";; A Shirt is a (make-shirt Number String)" 0 0 24 29 1 #"\n" 0 0 17 3 47 #";; where size and color refer to its appearance" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 19 #";; A Size is one of" 0 0 24 29 1 #"\n" 0 0 17 3 8 #";; - \"S\"" 0 0 24 29 1 #"\n" 0 0 17 3 8 #";; - \"M\"" 0 0 24 29 1 #"\n" 0 0 17 3 8 #";; - \"L\"" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 26 #";; Outfit String -> Outfit" 0 0 24 29 1 #"\n" 0 0 17 3 51 #";; Changes the given outfit to have the given color" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 2 #" (" 0 0 14 3 13 #"mono-colorize" 0 0 24 3 1 #" " 0 0 14 3 4 #"ouft" 0 0 24 3 1 #" " 0 0 14 3 5 #"color" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 15 3 5 #"local" 0 0 24 3 4 #" [ (" 0 0 15 3 6 #"define" 0 0 24 3 2 #" (" 0 0 14 3 15 #"colorize-blazer" 0 0 24 3 1 #" " 0 0 14 3 1 #"b" 0 0 24 3 1 #" " 0 0 14 3 1 #"c" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 14 #" (" 0 0 14 3 11 #"make-blazer" 0 0 24 3 2 #" (" 0 0 14 3 11 #"blazer-size" 0 0 24 3 1 #" " 0 0 14 3 1 #"b" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 25 #" " 0 0 14 3 1 #"c" 0 0 24 29 1 #"\n" 0 0 24 3 26 #" (" 0 0 14 3 14 #"blazer-padded?" 0 0 24 3 1 #" " 0 0 14 3 1 #"b" 0 0 24 3 4 #")))]" 0 0 24 29 1 #"\n" 0 0 24 3 5 #" (" 0 0 14 3 11 #"make-outfit" 0 0 24 3 2 #" (" 0 0 14 3 15 #"colorize-blazer" 0 0 24 3 2 #" (" 0 0 14 3 13 #"outfit-blazer" 0 0 24 3 1 #" " 0 0 14 3 4 #"ouft" 0 0 24 3 2 #") " 0 0 14 3 5 #"color" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 17 #" (" 0 0 15 3 5 #"local" 0 0 24 3 3 #"[ (" 0 0 15 3 6 #"define" 0 0 24 3 2 #" (" 0 0 14 3 14 #"colorize-pants" 0 0 24 3 1 #" " 0 0 14 3 1 #"p" 0 0 24 3 1 #" " 0 0 14 3 1 #"c" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 27 #" (" 0 0 14 3 10 #"make-pants" 0 0 24 3 2 #" (" 0 0 14 3 10 #"pants-size" 0 0 24 3 1 #" " 0 0 14 3 1 #"p" 0 0 24 3 3 #") " 0 0 14 3 1 #"c" 0 0 24 29 1 #"\n" 0 0 24 3 38 #" (" 0 0 14 3 12 #"pants-length" 0 0 24 3 1 #" " 0 0 14 3 1 #"p" 0 0 24 3 4 #")))]" 0 0 24 29 1 #"\n" 0 0 24 3 19 #" (" 0 0 14 3 14 #"colorize-pants" 0 0 24 3 2 #" (" 0 0 14 3 12 #"outfit-pants" 0 0 24 3 1 #" " 0 0 14 3 4 #"ouft" 0 0 24 3 2 #") " 0 0 14 3 5 #"color" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 17 #" (" 0 0 14 3 10 #"make-shirt" 0 0 24 3 2 #" (" 0 0 14 3 10 #"shirt-size" 0 0 24 3 2 #" (" 0 0 14 3 12 #"outfit-shirt" 0 0 24 3 1 #" " 0 0 14 3 4 #"ouft" 0 0 24 3 3 #")) " 0 0 14 3 5 #"color" 0 0 24 3 4 #"))))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 1 #" " 0 0 14 3 7 #"blazer1" 0 0 24 3 2 #" (" 0 0 14 3 11 #"make-blazer" 0 0 24 3 1 #" " 0 0 20 3 2 #"10" 0 0 24 3 1 #" " 0 0 19 3 8 #"\"purple\"" 0 0 24 3 1 #" " 0 0 14 3 4 #"true" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 1 #" " 0 0 14 3 6 #"pants1" 0 0 24 3 2 #" (" 0 0 14 3 10 #"make-pants" 0 0 24 3 1 #" " 0 0 20 3 2 #"28" 0 0 24 3 1 #" " 0 0 19 3 6 #"\"blue\"" 0 0 24 3 1 #" " 0 0 20 3 3 #"100" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 1 #" " 0 0 14 3 6 #"shirt1" 0 0 24 3 2 #" (" 0 0 14 3 10 #"make-shirt" 0 0 24 3 1 #" " 0 0 20 3 1 #"8" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"white\"" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 1 #" " 0 0 14 3 7 #"outfit1" 0 0 24 3 2 #" (" 0 0 14 3 11 #"make-outfit" 0 0 24 3 1 #" " 0 0 14 3 7 #"blazer1" 0 0 24 3 1 #" " 0 0 14 3 6 #"pants1" 0 0 24 3 1 #" " 0 0 14 3 6 #"shirt1" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 1 #" " 0 0 14 3 7 #"blazer2" 0 0 24 3 2 #" (" 0 0 14 3 11 #"make-blazer" 0 0 24 3 1 #" " 0 0 20 3 2 #"10" 0 0 24 3 1 #" " 0 0 19 3 8 #"\"orange\"" 0 0 24 3 1 #" " 0 0 14 3 4 #"true" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 1 #" " 0 0 14 3 6 #"pants2" 0 0 24 3 2 #" (" 0 0 14 3 10 #"make-pants" 0 0 24 3 1 #" " 0 0 20 3 2 #"28" 0 0 24 3 1 #" " 0 0 19 3 8 #"\"orange\"" 0 0 24 3 1 #" " 0 0 20 3 3 #"100" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 1 #" " 0 0 14 3 6 #"shirt2" 0 0 24 3 2 #" (" 0 0 14 3 10 #"make-shirt" 0 0 24 3 1 #" " 0 0 20 3 1 #"8" 0 0 24 3 1 #" " 0 0 19 3 8 #"\"orange\"" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 1 #" " 0 0 14 3 7 #"outfit2" 0 0 24 3 2 #" (" 0 0 14 3 11 #"make-outfit" 0 0 24 3 1 #" " 0 0 14 3 7 #"blazer2" 0 0 24 3 1 #" " 0 0 14 3 6 #"pants2" 0 0 24 3 1 #" " 0 0 14 3 6 #"shirt2" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 12 #"check-expect" 0 0 24 3 2 #" (" 0 0 14 3 13 #"mono-colorize" 0 0 24 3 1 #" " 0 0 14 3 7 #"outfit2" 0 0 24 3 1 #" " 0 0 19 3 8 #"\"orange\"" 0 0 24 3 2 #") " 0 0 14 3 7 #"outfit2" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 83 ( #";; Let's try to understand the code and format it so that it's more " #"readable. Note:" ) 0 0 24 29 1 #"\n" 0 0 17 3 91 ( #";; The test given to you is correct so you can use it to check if yo" #"ur fix is still valid. " ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 8 #";; Q4.1 " 0 0 17 3 4 #"What" 0 0 17 3 1 #" " 0 0 17 3 2 #"is" 0 0 17 3 1 #" " 0 0 17 3 3 #"the" 0 0 17 3 1 #" " 0 0 17 3 10 #"difference" 0 0 17 3 1 #" " 0 0 17 3 7 #"between" 0 0 17 3 1 #" " 0 0 17 3 3 #"the" 0 0 17 3 1 #" " 0 0 17 3 4 #"size" 0 0 17 3 1 #" " 0 0 17 3 2 #"in" 0 0 17 3 29 #" the structure blazer and the" 0 0 24 29 1 #"\n" 0 0 17 3 75 ( #";; size in pants and shirt? Hint: Look at the types. Are these types" #" valid?" ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 69 ( #";; Q4.2 Try to format the local functions so that it is more readabl" #"e" ) 0 0 24 29 1 #"\n" 0 0 17 3 55 #";; Hint: more than one function can go in (local [...])" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 74 ( #";; Q4.3 The local functions take in an unnecessary input. Which one " #"is it?" ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 139 ( #"; ;;;;;;;;;;;;;;;;;;;; ;;; " #" ;;;;;;;;;;;;;;;;;;;;; ;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 139 ( #"; ;;;;;;;;;;;;;;;;;;;;;; ;;; " #" ;;;;;;;;;;;;;;;;;;;;; ;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 139 ( #"; ;;;;;;; ;;;;;;; ;;;; " #" ;;;;;;; ;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 139 ( #"; ;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; ;;;;;;; ;;;; ;;;;;;;;;; " #" ;;;;;;; ;;;;; ;;;;;;; ;;;;;;;;;; ;;;;;; ;;;;;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 139 ( #"; ;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;; " #" ;;;;;;;;;;; ;;;;;;; ;;;;;;;;;; ;;;;;; ;;;;;;;;;;;;" #"; " ) 0 0 24 29 1 #"\n" 0 0 17 3 139 ( #"; ;;;;;;; ; ;;;;;;;;;; ;;;;; ;;;;; " #" ;;;;;;;;;;; ;;;;; ;;;;;; ;;; ;;;;;;;;;;;;;" #";; " ) 0 0 24 29 1 #"\n" 0 0 17 3 139 ( #"; ;;;;;;; ;;;;;; ;;;;; ;; ;;;;; ;;;;; ;;" #" ;;;;;;; ;;;;; ;;;;;;;;; ;;;;;; ;" #";; " ) 0 0 24 29 1 #"\n" 0 0 17 3 139 ( #"; ;;;;;;;;;;;;; ;;;;;;;;;;;;;;;; ;;;;;;;;; ;;;;;;;; " #" ;;;;;;;;;;;; ;;;;;;;;; ;;;;;;; ;;;;;;;;;;;;" #"; " ) 0 0 24 29 1 #"\n" 0 0 17 3 139 ( #"; ;;;;;;;;;;;;; ;;;;;; ;;;;;; ;;;;;;;;; ;;;;;; " #" ;;;;;;;;;;;; ;;;;;;;;; ;;;;; ;;;;;;;;; " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 139 ( #"; " #" " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 139 ( #"; " #" " #" " ) 0 0 24 29 1 #"\n" 0 0 17 3 139 ( #"; " #" " #" " ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 83 ( #";; Some times it may seem tedious to write descriptive function name" #"s, but there is" ) 0 0 24 29 1 #"\n" 0 0 17 3 71 ( #";; a pay off when you make your code clearer. For example, look at t" #"his" ) 0 0 24 29 1 #"\n" 0 0 17 3 48 #";; function with vague function and input names:" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 56 #";; [List-of Number] [List-of Number] -> [List-of Number]" 0 0 24 29 1 #"\n" 0 0 17 3 42 #";; Delete items in los1 that exist in los2" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 2 #" (" 0 0 14 3 17 #"delete-common-bad" 0 0 24 3 1 #" " 0 0 14 3 1 #"a" 0 0 24 3 1 #" " 0 0 14 3 1 #"b" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 2 #" " 0 0 17 3 21 #";; Number -> Boolean " 0 0 24 29 1 #"\n" 0 0 24 3 2 #" " 0 0 17 3 59 #";; Checks of the given number exists does not exist in los2" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 15 3 5 #"local" 0 0 24 3 3 #" [(" 0 0 15 3 6 #"define" 0 0 24 3 2 #" (" 0 0 14 3 3 #"hlp" 0 0 24 3 1 #" " 0 0 14 3 1 #"y" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 13 #" (" 0 0 14 3 3 #"not" 0 0 24 3 2 #" (" 0 0 14 3 5 #"ormap" 0 0 24 3 2 #" (" 0 0 15 3 6 #"lambda" 0 0 24 3 2 #" (" 0 0 14 3 1 #"x" 0 0 24 3 3 #") (" 0 0 14 3 1 #"=" 0 0 24 3 1 #" " 0 0 14 3 1 #"y" 0 0 24 3 1 #" " 0 0 14 3 1 #"x" 0 0 24 3 3 #")) " 0 0 14 3 1 #"b" 0 0 24 3 4 #")))]" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 14 3 6 #"filter" 0 0 24 3 1 #" " 0 0 14 3 3 #"hlp" 0 0 24 3 1 #" " 0 0 14 3 1 #"a" 0 0 24 3 3 #")))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 12 #"check-expect" 0 0 24 3 2 #" (" 0 0 14 3 17 #"delete-common-bad" 0 0 24 3 2 #" (" 0 0 14 3 4 #"list" 0 0 24 3 1 #" " 0 0 20 3 1 #"1" 0 0 24 3 1 #" " 0 0 20 3 1 #"2" 0 0 24 3 1 #" " 0 0 20 3 1 #"3" 0 0 24 3 3 #") (" 0 0 14 3 4 #"list" 0 0 24 3 1 #" " 0 0 20 3 1 #"5" 0 0 24 3 1 #" " 0 0 20 3 1 #"6" 0 0 24 3 1 #" " 0 0 20 3 1 #"2" 0 0 24 3 1 #" " 0 0 20 3 1 #"1" 0 0 24 3 4 #")) (" 0 0 14 3 4 #"list" 0 0 24 3 1 #" " 0 0 20 3 1 #"3" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 60 #";; The above is quite difficult to read, compare it to this:" 0 0 24 29 1 #"\n" 0 0 17 3 56 #";; [List-of Number] [List-of Number] -> [List-of Number]" 0 0 24 29 1 #"\n" 0 0 17 3 42 #";; Delete items in los1 that exist in los2" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 2 #" (" 0 0 14 3 18 #"delete-common-good" 0 0 24 3 1 #" " 0 0 14 3 4 #"los1" 0 0 24 3 1 #" " 0 0 14 3 4 #"los2" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 2 #" " 0 0 17 3 21 #";; Number -> Boolean " 0 0 24 29 1 #"\n" 0 0 24 3 2 #" " 0 0 17 3 59 #";; Checks of the given number exists does not exist in los2" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 15 3 5 #"local" 0 0 24 3 3 #" [(" 0 0 15 3 6 #"define" 0 0 24 3 2 #" (" 0 0 14 3 11 #"is-in-los2?" 0 0 24 3 1 #" " 0 0 14 3 6 #"e-los1" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 13 #" (" 0 0 14 3 3 #"not" 0 0 24 3 2 #" (" 0 0 14 3 5 #"ormap" 0 0 24 3 2 #" (" 0 0 15 3 6 #"lambda" 0 0 24 3 2 #" (" 0 0 14 3 6 #"e-los2" 0 0 24 3 3 #") (" 0 0 14 3 1 #"=" 0 0 24 3 1 #" " 0 0 14 3 6 #"e-los1" 0 0 24 3 1 #" " 0 0 14 3 6 #"e-los2" 0 0 24 3 3 #")) " 0 0 14 3 4 #"los2" 0 0 24 3 4 #")))]" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 14 3 6 #"filter" 0 0 24 3 1 #" " 0 0 14 3 11 #"is-in-los2?" 0 0 24 3 1 #" " 0 0 14 3 4 #"los1" 0 0 24 3 3 #")))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 12 #"check-expect" 0 0 24 3 2 #" (" 0 0 14 3 18 #"delete-common-good" 0 0 24 3 2 #" (" 0 0 14 3 4 #"list" 0 0 24 3 1 #" " 0 0 20 3 1 #"1" 0 0 24 3 1 #" " 0 0 20 3 1 #"2" 0 0 24 3 1 #" " 0 0 20 3 1 #"3" 0 0 24 3 3 #") (" 0 0 14 3 4 #"list" 0 0 24 3 1 #" " 0 0 20 3 1 #"5" 0 0 24 3 1 #" " 0 0 20 3 1 #"6" 0 0 24 3 1 #" " 0 0 20 3 1 #"2" 0 0 24 3 1 #" " 0 0 20 3 1 #"1" 0 0 24 3 4 #")) (" 0 0 14 3 4 #"list" 0 0 24 3 1 #" " 0 0 20 3 1 #"3" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 1 #" " 0 0 24 29 1 #"\n" 0 0 17 3 79 ( #";; This naming makes it easier to understand where the input is comi" #"ng from and" ) 0 0 24 29 1 #"\n" 0 0 17 3 51 #";; what the functions are meant to handle. Although" 0 0 17 3 1 #" " 0 0 17 3 2 #"it" 0 0 17 3 1 #" " 0 0 17 3 3 #"can" 0 0 17 3 1 #" " 0 0 17 3 2 #"be" 0 0 17 3 1 #" " 0 0 17 3 4 #"good" 0 0 17 3 1 #" " 0 0 17 3 2 #"to" 0 0 17 3 13 #" be specific " 0 0 24 29 1 #"\n" 0 0 17 3 5 #";; in" 0 0 17 3 1 #" " 0 0 17 3 4 #"your" 0 0 17 3 1 #" " 0 0 17 3 8 #"function" 0 0 17 3 7 #" names " 0 0 17 3 2 #"as" 0 0 17 3 1 #" " 0 0 17 3 4 #"well" 0 0 17 3 1 #" " 0 0 17 3 2 #"as" 0 0 17 3 1 #" " 0 0 17 3 5 #"input" 0 0 17 3 1 #" " 0 0 17 3 5 #"names" 0 0 17 3 1 #"," 0 0 17 3 1 #" " 0 0 17 3 2 #"it" 0 0 17 3 1 #" " 0 0 17 3 2 #"is" 0 0 17 3 19 #" not good practice" 0 0 24 29 1 #"\n" 0 0 17 3 60 #";; when you are trying to create functions that are absrtact" 0 0 24 29 1 #"\n" 0 0 17 3 65 #";; E.g. If is-in-los2? were to take in values not from los1, then" 0 0 24 29 1 #"\n" 0 0 17 3 56 #";; the input name e-los1 does not make sense and a more " 0 0 24 29 1 #"\n" 0 0 17 3 36 #";; generic name will be preferable. " 0 0 24 29 1 #"\n" 0 0 24 3 1 #" " 0 0 24 29 1 #"\n" 0 0 17 3 73 ( #";; After reading the above example, let's try to improve the code be" #"low. " ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 57 #";; [List-of String] [List-of String] -> [List-of String] " 0 0 24 29 1 #"\n" 0 0 17 3 93 ( #";; Sums up the number of times that the strings in the first list ap" #"pears in the second list " ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 3 6 #"define" 0 0 24 3 2 #" (" 0 0 14 3 14 #"sum-occurences" 0 0 24 3 1 #" " 0 0 14 3 4 #"los1" 0 0 24 3 1 #" " 0 0 14 3 4 #"los2" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 2 #" " 0 0 17 3 60 #";; Adds the number of times e is found in los2 to the result" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 15 3 5 #"local" 0 0 24 3 3 #" [(" 0 0 15 3 6 #"define" 0 0 24 3 2 #" (" 0 0 14 3 6 #"helper" 0 0 24 3 1 #" " 0 0 14 3 1 #"e" 0 0 24 3 1 #" " 0 0 14 3 6 #"result" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 13 #" (" 0 0 14 3 1 #"+" 0 0 24 3 3 #" (" 0 0 14 3 5 #"foldr" 0 0 24 3 2 #" (" 0 0 15 3 6 #"lambda" 0 0 24 3 2 #" (" 0 0 14 3 2 #"es" 0 0 24 3 1 #" " 0 0 14 3 6 #"result" 0 0 24 3 3 #") (" 0 0 14 3 2 #"if" 0 0 24 3 2 #" (" 0 0 14 3 8 #"string=?" 0 0 24 3 1 #" " 0 0 14 3 2 #"es" 0 0 24 3 1 #" " 0 0 14 3 1 #"e" 0 0 24 3 3 #") (" 0 0 14 3 1 #"+" 0 0 24 3 1 #" " 0 0 20 3 1 #"1" 0 0 24 3 1 #" " 0 0 14 3 6 #"result" 0 0 24 3 3 #") (" 0 0 14 3 1 #"+" 0 0 24 3 1 #" " 0 0 20 3 1 #"0" 0 0 24 3 1 #" " 0 0 14 3 6 #"result" 0 0 24 3 3 #")))" 0 0 24 29 1 #"\n" 0 0 24 3 21 #" " 0 0 20 3 1 #"0" 0 0 24 3 1 #" " 0 0 24 29 1 #"\n" 0 0 24 3 21 #" " 0 0 14 3 4 #"los2" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 15 #" " 0 0 14 3 6 #"result" 0 0 24 3 3 #"))]" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 14 3 5 #"foldr" 0 0 24 3 1 #" " 0 0 14 3 6 #"helper" 0 0 24 3 1 #" " 0 0 20 3 1 #"0" 0 0 24 3 1 #" " 0 0 14 3 4 #"los1" 0 0 24 3 4 #"))) " 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 12 #"check-expect" 0 0 24 3 2 #" (" 0 0 14 3 14 #"sum-occurences" 0 0 24 3 2 #" (" 0 0 14 3 4 #"list" 0 0 24 3 1 #" " 0 0 19 3 3 #"\"a\"" 0 0 24 3 1 #" " 0 0 19 3 3 #"\"b\"" 0 0 24 3 1 #" " 0 0 19 3 3 #"\"c\"" 0 0 24 3 3 #") (" 0 0 14 3 4 #"list" 0 0 24 3 1 #" " 0 0 19 3 3 #"\"a\"" 0 0 24 3 1 #" " 0 0 19 3 3 #"\"d\"" 0 0 24 3 1 #" " 0 0 19 3 3 #"\"b\"" 0 0 24 3 1 #" " 0 0 19 3 3 #"\"a\"" 0 0 24 3 1 #" " 0 0 19 3 3 #"\"c\"" 0 0 24 3 1 #" " 0 0 19 3 3 #"\"b\"" 0 0 24 3 1 #" " 0 0 19 3 3 #"\"b\"" 0 0 24 3 4 #")) (" 0 0 14 3 1 #"+" 0 0 24 3 1 #" " 0 0 20 3 1 #"2" 0 0 24 3 1 #" " 0 0 20 3 1 #"3" 0 0 24 3 1 #" " 0 0 20 3 1 #"1" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 17 3 93 ( #";; Note: this test is valid and you can use to to check if your impr" #"oved code works with it. " ) 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 52 #";; Q5.1 Can you replace \"helper\" with a better name?" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 49 #";; Q5.2 Write a signature for the local function " 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 41 #";; Q5.3 Improve the input names: e and es" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 43 #";; Q5.4 Improve the input name(s): result. " 0 0 24 29 1 #"\n" 0 0 17 3 34 #";; Hint: Say you have the function" 0 0 24 29 1 #"\n" 0 0 17 3 4 #";; (" 0 0 17 3 6 #"define" 0 0 17 3 2 #" (" 0 0 17 3 3 #"foo" 0 0 17 3 1 #" " 0 0 17 3 1 #"x" 0 0 17 3 4 #") ((" 0 0 17 3 6 #"lambda" 0 0 17 3 2 #" (" 0 0 17 3 10 #"x) x) 5)) " 0 0 24 29 1 #"\n" 0 0 17 3 60 #";; What does (foo 8) return? Why does it return 5 and not 8?" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 2 #" " 0 0 24 29 1 #"\n" 0 0 24 3 2 #" " 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #" " 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #" " 0 0