#reader(lib"read.ss""wxme")WXME0111 ## #| This file uses the GRacket editor format. Open this file in DrRacket version 8.14 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/ |# 34 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 36 #"(lib \"cache-image-snip.ss\" \"mrlib\")\0" 1 0 68 (0 68 ((lib "image-core.ss" "mrlib") (lib "image-core-wxme.rkt" "mrlib")) ) 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 79 (1 79 ((lib "srcloc-snip.rkt" "framework") (lib "wxme-srcloc-snip.rkt" "framework")) ) 1 0 93 (2 93 ((lib "collapsed-snipclass.ss" "framework") (lib "collapsed-snipclass-wxme.ss" "framework")) ) 0 0 43 #"(lib \"collapsed-snipclass.ss\" \"framework\")\0" 0 0 19 #"drscheme:sexp-snip\0" 0 0 29 #"drscheme:bindings-snipclass%\0" 1 0 101 (3 101 ((lib "ellipsis-snip.rkt" "drracket" "private") (lib "ellipsis-snip-wxme.rkt" "drracket" "private")) ) 2 0 88 (4 88 ((lib "pict-snip.rkt" "drracket" "private") (lib "pict-snip.rkt" "drracket" "private")) ) 1 0 55 #"((lib \"snip.rkt\" \"pict\") (lib \"snip-wxme.rkt\" \"pict\"))\0" 1 0 34 #"(lib \"bullet-snip.rkt\" \"browser\")\0" 0 0 25 #"(lib \"matrix.ss\" \"htdp\")\0" 1 0 22 #"drscheme:lambda-snip%\0" 1 0 29 #"drclickable-string-snipclass\0" 0 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 108 0 1 #"\0" 0 75 1 #"\0" 0 12 90 -1 90 -1 3 -1 0 1 0 1 0 0 0 0 0 1.0 0 0 0 1.0 0 0 0 0.0 255 255 255 0.0 1 -1 0 9 #"Standard\0" 0 75 12 #"Courier New\0" 0 27 90 -1 90 -1 3 -1 0 1 0 1 0 0 0 0 0 1.0 0 0 0 1.0 0 0 0 0.0 255 255 255 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 1 1 1 1.0 1 1 1 1.0 0 0 0 0.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 0.0 1 1 1 1.0 0 0 0 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 0.0 1 1 1 1.0 150 0 150 1.0 0 0 0 0.0 -1 -1 2 15 #"text:ports out\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 150 0 150 1.0 0 0 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 1.0 1.0 1.0 1.0 255 0 0 1.0 0 0 0 0.0 -1 -1 2 15 #"text:ports err\0" 0 -1 1 #"\0" 1 0 -1 -1 93 -1 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 255 0 0 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 0.0 1 1 1 1.0 0 0 175 1.0 0 0 0 0.0 -1 -1 2 17 #"text:ports value\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 0 0 175 1.0 0 0 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 0.0 1.0 1.0 1.0 1.0 34 139 34 1.0 0 0 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 0.0 1.0 1.0 1.0 1.0 34 139 34 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 38 38 128 1.0 0 0 0 0.0 -1 -1 2 37 #"framework:syntax-color:scheme:symbol\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 38 38 128 1.0 0 0 0 0.0 -1 -1 2 38 #"framework:syntax-color:scheme:keyword\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 38 38 128 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 90 -1 90 -1 -1 -1 0 1 0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0 0 0 1.0 0 0 0 0.0 -1 -1 2 38 #"framework:syntax-color:scheme:comment\0" 0 -1 1 #"\0" 1 0 90 -1 90 -1 -1 -1 0 1 0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0 0 0 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 41 128 38 1.0 0 0 0 0.0 -1 -1 2 37 #"framework:syntax-color:scheme:string\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 41 128 38 1.0 0 0 0 0.0 -1 -1 2 35 #"framework:syntax-color:scheme:text\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 41 128 38 1.0 0 0 0 0.0 -1 -1 2 39 #"framework:syntax-color:scheme:constant\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 41 128 38 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 132 60 36 1.0 0 0 0 0.0 -1 -1 2 49 #"framework:syntax-color:scheme:hash-colon-keyword\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 132 60 36 1.0 0 0 0 0.0 -1 -1 2 42 #"framework:syntax-color:scheme:parenthesis\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 132 60 36 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 255 0 0 1.0 0 0 0 0.0 -1 -1 2 36 #"framework:syntax-color:scheme:error\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 255 0 0 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 0 0 0 1.0 0 0 0 0.0 -1 -1 2 36 #"framework:syntax-color:scheme:other\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 0 0 0 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 0.0 1 1 1 1.0 0 0 0 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 81 112 203 1.0 0 0 0 0.0 -1 -1 2 38 #"drracket:check-syntax:lexically-bound\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 81 112 203 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 178 34 34 1.0 0 0 0 0.0 -1 -1 2 28 #"drracket:check-syntax:set!d\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 178 34 34 1.0 0 0 0 0.0 -1 -1 2 37 #"drracket:check-syntax:unused-require\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 255 0 0 1.0 0 0 0 0.0 -1 -1 2 36 #"drracket:check-syntax:free-variable\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 255 0 0 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 68 0 203 1.0 0 0 0 0.0 -1 -1 2 31 #"drracket:check-syntax:imported\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 68 0 203 1.0 0 0 0 0.0 -1 -1 2 47 #"drracket:check-syntax:my-obligation-style-pref\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 178 34 34 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 0 116 0 1.0 0 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 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 0 116 0 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 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 0 0 0 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 139 142 28 1.0 0 0 0 0.0 -1 -1 2 49 #"drracket:check-syntax:both-obligation-style-pref\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 139 142 28 1.0 0 0 0 0.0 -1 -1 2 26 #"plt:htdp:test-coverage-on\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 0 0 0 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 1 0 0 0 0.0 0 0 0 0.0 255 165 0 1.0 0 0 0 1.0 -1 -1 2 27 #"plt:htdp:test-coverage-off\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 1 0 0 0 0.0 0 0 0 0.0 255 165 0 1.0 0 0 0 1.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 1.0 1.0 0 0 0 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 1.0 1.0 0 0 0 0.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 0 100 0 1.0 0 0 0 0.0 -1 -1 2 61 #"drracket:language name and memory use at top of interactions\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 0 100 0 1.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 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 0 0 0 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 93 -1 -1 0 1 0 0 0 1 0 0 0 0.0 0 0 0 0.0 255 165 0 1.0 0 0 0 1.0 -1 -1 0 36 #"mrlib/syntax-browser:subtitle-color\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 0 0 0.0 36 36 140 1.0 255 255 255 1.0 -1 -1 0 42 #"mrlib/syntax-browser:focused-syntax-color\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 0 0 0.0 34 139 34 1.0 255 255 255 1.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 1.0 1.0 0 0 0 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 0.0 1.0 1.0 1.0 1.0 0 0 255 1.0 0 0 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 0.0 1.0 1.0 1.0 1.0 0 0 255 1.0 0 0 0 0.0 -1 -1 50 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 1.0 1.0 0 0 0 0.0 0 0 0 0.0 -1 -1 0 1 #"\0" 0 -1 1 #"\0" 0 13 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 0 13 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0.0 0 0 0 0.0 -1 -1 4 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 0 0 175 1.0 0 0 0 0.0 -1 -1 0 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 0.0 1 1 1 1.0 150 0 150 1.0 0 0 0 0.0 -1 -1 4 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 1 0 0 0 0 0 0 0 0 0.0 1.0 1.0 1.0 1.0 0 0 175 1.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 1 0 0 0 0 1.0 0 0 0 1.0 0 0 0 0.0 255 255 255 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 1.0 0 0 0 1.0 0 0 0 0.0 255 255 255 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 1.0 0 0 0 1.0 0 0 0 0.0 255 255 255 0.0 -1 -1 44 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0 0 0 1.0 0 0 0 1.0 0 0 0 0.0 255 255 255 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 1.0 0 0 0 1.0 0 0 0 0.0 255 255 255 0.0 -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 1.0 0 0 0 1.0 0 0 0 0.0 255 255 255 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 1.0 0 0 0 1.0 0 0 0 0.0 255 255 255 0.0 -1 -1 0 1 #"\0" 0 75 1 #"\0" 0.0 10 90 -1 90 -1 3 -1 0 1 0 1 0 0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0 0 0 0.0 255 255 255 0.0 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 1.0 0.0 0.0 0.0 1.0 0 0 0 0.0 255 255 255 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 1.0 1.0 1.0 1.0 0 0 0 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 150 0 150 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 93 -1 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 255 0 0 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 0 0 175 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 194 116 31 1.0 0 0 0 0.0 -1 -1 0 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 0.0 0.0 36 36 140 1.0 255 255 255 1.0 -1 -1 0 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 0.0 0.0 34 139 34 1.0 255 255 255 1.0 -1 -1 50 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 0.0 1.0 1.0 1.0 1.0 255 0 0 1.0 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 0.0 1.0 1.0 1.0 1.0 148 0 211 1.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 0.0 1.0 1.0 1.0 1.0 0 0 255 1.0 0 0 0 0.0 -1 -1 0 1 #"\0" 0 -1 1 #"\0" 0.0 12 -1 -1 -1 -1 -1 -1 0 0 1 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 0.0 12 -1 -1 -1 -1 -1 -1 0 0 1 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0.0 0 0 0 0.0 -1 -1 0 1 #"\0" 0 75 6 #"Menlo\0" 0.0 12 90 -1 90 -1 3 -1 0 1 0 1 0 0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0 0 0 0.0 255 255 255 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 1.0 1.0 1.0 1.0 255 255 255 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 192 46 214 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 57 89 216 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 157 157 250 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 249 148 40 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 140 212 140 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 51 174 51 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 151 69 43 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 255 255 255 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 50 163 255 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 255 192 203 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 166 0 255 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 50 205 50 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 240 230 140 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 205 92 92 1.0 0 0 0 1.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 152 251 152 1.0 0 0 0 0.0 -1 -1 0 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 0.0 0.0 100 149 237 1.0 0 0 0 1.0 -1 -1 0 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 0.0 0.0 50 205 50 1.0 0 0 0 1.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.0 0.0 0.0 1.0 1.0 1.0 1.0 0 191 255 1.0 0 0 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.0 0.0 0.0 1.0 1.0 1.0 1.0 0 191 255 1.0 0 0 0 0.0 -1 -1 0 1 #"\0" 0 -1 1 #"\0" 0.0 13 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 255 255 255 1.0 0 0 0 0.0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 0.0 13 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 255 255 255 1.0 0 0 0 0.0 -1 -1 0 841 0 4 3 85 (5 85 ;; The first three lines of this file were inserted by DrRacket. They record metadata ) 0 0 4 29 1 #"\n" 0 0 4 3 85 (6 85 ;; about the language level of this file in a form that our tools can easily process. ) 0 0 4 29 1 #"\n" 0 0 4 3 181 (7 181 #reader(lib "htdp-beginner-reader.ss" "lang")((modname 111lect02-2) (read-case-sensitive #t) (teachpacks ()) (htdp-settings #(#t constructor repeating-decimal #f #t none #f () #f))) ) 0 0 4 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 42 #"; CS 111 - Week 2 - Lecture 2 - 2024-09-05" 0 0 24 29 1 #"\n" 0 0 17 3 29 #"; Cleaned up after class!" 0 0 24 29 1 #"\n" 0 0 17 3 27 #"; last modified: 2024-09-05" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 15 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 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 52 #"; REPEATING this from the projected notes for today:" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 4 #"; CS" 0 0 17 3 1 #" " 0 0 17 3 3 #"111" 0 0 17 3 1 #" " 0 0 17 3 5 #"CLASS" 0 0 17 3 1 #" " 0 0 17 3 5 #"STYLE" 0 0 17 3 1 #" " 0 0 17 3 9 #"STANDARDS" 0 0 17 3 1 #" " 0 0 17 3 3 #"for" 0 0 17 3 1 #" " 0 0 17 3 10 #"identifier" 0 0 17 3 6 #" names" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 4 #" " 0 0 17 3 1 #"*" 0 0 17 3 8 #" start" 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 7 #" letter" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 4 #" " 0 0 17 3 1 #"*" 0 0 17 3 3 #" " 0 0 17 3 6 #"chosen" 0 0 17 3 1 #" " 0 0 17 3 2 #"to" 0 0 17 3 1 #" " 0 0 17 3 2 #"be" 0 0 17 3 1 #" " 0 0 17 3 10 #"meaningful" 0 0 17 3 1 #"," 0 0 17 3 1 #" " 0 0 17 3 11 #"descriptive" 0 0 17 3 1 #"," 0 0 17 3 1 #" " 0 0 17 3 3 #"and" 0 0 17 3 1 #" " 0 0 17 3 3 #"NOT" 0 0 17 3 11 #" misleading" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 4 #" " 0 0 17 3 1 #"*" 0 0 17 3 3 #" " 0 0 17 3 5 #"named" 0 0 17 3 1 #" " 0 0 17 3 9 #"constants" 0 0 17 3 1 #" " 0 0 17 3 6 #"should" 0 0 17 3 1 #" " 0 0 17 3 2 #"be" 0 0 17 3 14 #" all-uppercase" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 4 #" " 0 0 17 3 1 #"*" 0 0 17 3 3 #" " 0 0 17 3 8 #"function" 0 0 17 3 1 #" " 0 0 17 3 5 #"names" 0 0 17 3 1 #" " 0 0 17 3 6 #"should" 0 0 17 3 1 #" " 0 0 17 3 2 #"be" 0 0 17 3 1 #" " 0 0 17 3 13 #"all-lowercase" 0 0 17 3 2 #" (" 0 0 17 3 2 #"or" 0 0 17 3 1 #" " 0 0 17 3 2 #"at" 0 0 17 3 6 #" least" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 1 17 65 1 #"\t" 0 0 17 3 6 #" start" 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 9 #"lowercase" 0 0 17 3 1 #" " 0 0 17 3 6 #"letter" 0 0 17 3 1 #" " 0 0 17 3 2 #"--" 0 0 17 3 1 #" " 0 0 17 3 9 #"camelCase" 0 0 17 3 1 #" " 0 0 17 3 2 #"is" 0 0 17 3 1 #" " 0 0 17 3 3 #"OK)" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 4 #" " 0 0 17 3 1 #"*" 0 0 17 3 3 #" " 0 0 17 3 9 #"parameter" 0 0 17 3 1 #" " 0 0 17 3 5 #"names" 0 0 17 3 1 #" " 0 0 17 3 6 #"should" 0 0 17 3 1 #" " 0 0 17 3 2 #"be" 0 0 17 3 1 #" " 0 0 17 3 13 #"all-lowercase" 0 0 17 3 2 #" (" 0 0 17 3 2 #"or" 0 0 17 3 1 #" " 0 0 17 3 2 #"at" 0 0 17 3 6 #" least" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 8 #" " 0 0 17 3 5 #"start" 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 9 #"lowercase" 0 0 17 3 1 #" " 0 0 17 3 6 #"letter" 0 0 17 3 1 #" " 0 0 17 3 2 #"--" 0 0 17 3 1 #" " 0 0 17 3 9 #"camelCase" 0 0 17 3 1 #" " 0 0 17 3 2 #"is" 0 0 17 3 1 #" " 0 0 17 3 3 #"OK)" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 25 #"; another named constant!" 0 0 24 29 1 #"\n" 0 0 17 3 57 #"; * intended to represent a maximum temperature desired" 0 0 24 29 1 #"\n" 0 0 17 3 26 #"; for making yogurt..." 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 #"MAX-YOG" 0 0 24 3 1 #" " 0 0 21 3 2 #"35" 0 0 24 3 4 #") " 0 0 17 3 15 #"; in Fahrenheit" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 34 #"; using the named constant MAX-YOG" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 14 3 7 #"MAX-YOG" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 7 #"number?" 0 0 24 3 1 #" " 0 0 14 3 7 #"MAX-YOG" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 54 #"; and another named constant, in case I might be using" 0 0 24 29 1 #"\n" 0 0 17 3 50 #"; a blue hexagon of this size, style, and color" 0 0 24 29 1 #"\n" 0 0 17 3 18 #"; several times" 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 8 #"BLUE-HEX" 0 0 24 3 2 #" (" 0 0 14 3 15 #"regular-polygon" 0 0 24 3 1 #" " 0 0 21 3 2 #"50" 0 0 24 3 1 #" " 0 0 21 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 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 35 #"; using the named constant BLUE-HEX" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 14 3 8 #"BLUE-HEX" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 7 #"overlay" 0 0 24 3 1 #" " 0 0 14 3 8 #"BLUE-HEX" 0 0 24 3 2 #" (" 0 0 14 3 6 #"circle" 0 0 24 3 1 #" " 0 0 21 3 2 #"75" 0 0 24 3 1 #" " 0 0 19 3 9 #"\"outline\"" 0 0 24 3 1 #" " 0 0 19 3 5 #"\"red\"" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";-----" 0 0 24 29 1 #"\n" 0 0 17 3 49 #"; playing around with a named constant WIDGET-MAX" 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 10 #"WIDGET-MAX" 0 0 24 3 1 #" " 0 0 21 3 2 #"13" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 3 #"and" 0 0 24 3 2 #" (" 0 0 14 3 1 #">" 0 0 24 3 1 #" " 0 0 14 3 10 #"WIDGET-MAX" 0 0 24 3 1 #" " 0 0 21 3 2 #"10" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 6 #" (" 0 0 14 3 1 #"<" 0 0 24 3 1 #" " 0 0 14 3 10 #"WIDGET-MAX" 0 0 24 3 1 #" " 0 0 21 3 2 #"20" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 6 #" (" 0 0 14 3 1 #"=" 0 0 24 3 1 #" " 0 0 14 3 7 #"MAX-YOG" 0 0 24 3 1 #" " 0 0 14 3 10 #"WIDGET-MAX" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 43 #"; check-expect - one of a FAMILY of TESTING" 0 0 24 29 1 #"\n" 0 0 17 3 37 #"; functions provided by DrRacket!" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 37 #"; check-expect expects TWO arguments," 0 0 24 29 1 #"\n" 0 0 17 3 33 #"; an expression to be tested," 0 0 24 29 1 #"\n" 0 0 17 3 50 #"; and an expression whose value is what I HOPE" 0 0 24 29 1 #"\n" 0 0 17 3 46 #"; the value of the first expression is" 0 0 24 29 1 #"\n" 0 0 17 3 25 #"; and it returns nothing," 0 0 24 29 1 #"\n" 0 0 17 3 35 #"; BUT has several side-effects:" 0 0 24 29 1 #"\n" 0 0 17 3 73 (8 73 ; * if all the check- expressions in the Definitions window passed, ) 0 0 24 29 1 #"\n" 0 0 17 3 57 #"; prints a message at the end of the Interactions" 0 0 24 29 1 #"\n" 0 0 17 3 46 #"; windows saying how many tests passed" 0 0 24 29 1 #"\n" 0 0 17 3 51 #"; * if any failed, a pop-up window gives info" 0 0 24 29 1 #"\n" 0 0 17 3 30 #"; about those failures" 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 7 #"number?" 0 0 24 3 1 #" " 0 0 14 3 7 #"MAX-YOG" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 14 #" " 0 0 21 3 5 #"#true" 0 0 24 3 1 #")" 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 8 #"boolean?" 0 0 24 3 1 #" " 0 0 19 3 6 #"\"#true" 0 0 19 3 1 #"\"" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 14 #" " 0 0 21 3 6 #"#false" 0 0 24 3 1 #")" 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 1 #" " 0 0 14 3 8 #"BLUE-HEX" 0 0 24 29 1 #"\n" 0 0 24 3 15 #" (" 0 0 14 3 15 #"regular-polygon" 0 0 24 3 1 #" " 0 0 21 3 2 #"50" 0 0 24 3 1 #" " 0 0 21 3 1 #"6" 0 0 24 3 1 #" " 0 0 19 3 6 #"\"solid" 0 0 19 3 1 #"\"" 0 0 24 3 1 #" " 0 0 19 3 5 #"\"blue" 0 0 19 3 1 #"\"" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 57 #"; this one fails -- UNCOMMENT it to see the pop-up window" 0 0 24 29 1 #"\n" 0 0 17 3 18 #"; that results" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 22 #";(check-expect 0.33333" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 15 #" (" 0 0 17 3 7 #"/ 1 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 12 #"image-height" 0 0 24 3 2 #" (" 0 0 14 3 6 #"square" 0 0 24 3 1 #" " 0 0 21 3 2 #"10" 0 0 24 3 1 #" " 0 0 19 3 6 #"\"solid" 0 0 19 3 1 #"\"" 0 0 24 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 7 #"purple\"" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 14 #" " 0 0 21 3 2 #"10" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 67 #"; class member noted CAN paste a repeating-decimal literal from the" 0 0 24 29 1 #"\n" 0 0 17 3 54 #"; Interactions window into the Definitions window!" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 41 #"; kluging to get this to display in HTML!" 0 0 24 29 1 #"\n" 0 0 17 3 17 #"; BUT you CAN:" 0 0 24 29 1 #"\n" 0 0 17 3 63 #"; * in the Interactions/lower window, enter the expression" 0 0 24 29 1 #"\n" 0 0 17 3 16 #"; (/ 1 3)" 0 0 24 29 1 #"\n" 0 0 17 3 76 (9 76 ; * copy and PASTE the resulting expression from the Interactions/lower ) 0 0 24 29 1 #"\n" 0 0 17 3 49 #"; window into the Definitions/upper window" 0 0 24 29 1 #"\n" 0 0 17 3 49 #"; * and it DOES have the value of one-third!" 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 1 #" " 0 8 10 21 4 #"1/3\0" 1 #"\0" 8 #"decimal\0" 2 #"1\0" 0 0 24 29 1 #"\n" 0 0 24 3 15 #" (" 0 0 14 3 1 #"/" 0 0 24 3 1 #" " 0 0 21 3 1 #"1" 0 0 24 3 1 #" " 0 0 21 3 1 #"3" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 28 #"; writing your own FUNCTIONS" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 14 #"; in MATH....." 0 0 24 29 1 #"\n" 0 0 17 3 15 #"; f(x) = 3x" 0 0 24 29 1 #"\n" 0 0 17 3 25 #"; f(4) is equal to 12" 0 0 24 29 1 #"\n" 0 0 17 3 26 #"; f(10) is equal to 30" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 24 29 1 #"\n" 0 0 17 3 28 #"; in BSL (Beginning Student " 0 0 17 3 52 #"Language) Racket, you can write a function using the" 0 0 24 29 1 #"\n" 0 0 17 3 13 #"; syntax:" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 24 29 1 #"\n" 0 0 17 3 42 #"; (define (desired-new-funct param-name-1 " 0 0 17 3 17 #"param-name-2 ...)" 0 0 24 29 1 #"\n" 0 0 17 3 49 #"; expression ; hopefully using param-name-1 " 0 0 17 3 4 #"etc." 0 0 24 29 1 #"\n" 0 0 17 3 3 #"; )" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 24 29 1 #"\n" 0 0 17 3 18 #"; function header:" 0 0 24 29 1 #"\n" 0 0 17 3 45 #"; (define (desired-new-funct param-name-1 " 0 0 17 3 17 #"param-name-2 ...)" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 24 29 1 #"\n" 0 0 17 3 16 #"; function body:" 0 0 24 29 1 #"\n" 0 0 17 3 48 #"; expression ; hopefully using param-name-1 " 0 0 17 3 4 #"etc." 0 0 24 29 1 #"\n" 0 0 17 3 3 #"; )" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 24 29 1 #"\n" 0 0 17 3 49 #"; once defined, desired-new-funct can be used in " 0 0 17 3 8 #"compound" 0 0 24 29 1 #"\n" 0 0 17 3 17 #"; expressions!" 0 0 24 29 1 #"\n" 0 0 17 3 40 #"; with as many arguments as you gave it " 0 0 17 3 11 #"parameters!" 0 0 24 29 1 #"\n" 0 0 17 3 67 #"; and each time you use your new function in a compound expression," 0 0 24 29 1 #"\n" 0 0 17 3 20 #"; each parameter" 0 0 17 3 1 #" " 0 0 17 3 2 #"is" 0 0 17 3 1 #" " 0 0 17 3 3 #"set" 0 0 17 3 1 #" " 0 0 17 3 2 #"to" 0 0 17 3 1 #" " 0 0 17 3 3 #"the" 0 0 17 3 1 #" " 0 0 17 3 5 #"value" 0 0 17 3 1 #" " 0 0 17 3 2 #"of" 0 0 17 3 1 #" " 0 0 17 3 3 #"its" 0 0 17 3 1 #" " 0 0 17 3 9 #"argument," 0 0 24 29 1 #"\n" 0 0 17 3 50 #"; and the value of its body expression is the " 0 0 17 3 5 #"value" 0 0 24 29 1 #"\n" 0 0 17 3 52 #"; of the resulting compound expression! (of the " 0 0 17 3 15 #"function call!)" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";-----" 0 0 24 29 1 #"\n" 0 0 17 3 54 #"; so, we could write Math's f(x) = 3x in Racket using:" 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 1 #"f" 0 0 24 3 1 #" " 0 0 14 3 1 #"x" 0 0 24 3 6 #") " 0 0 17 3 59 #"; <- function header, defining a function named f with one " 0 0 17 3 12 #"parameter, x" 0 0 24 29 1 #"\n" 0 0 24 3 5 #" (" 0 0 14 3 1 #"*" 0 0 24 3 1 #" " 0 0 21 3 1 #"3" 0 0 24 3 1 #" " 0 0 14 3 1 #"x" 0 0 24 3 8 #") " 0 0 17 3 59 #"; <- function body, including the expression computing the " 0 0 17 3 11 #"function's " 0 0 17 3 5 #"value" 0 0 24 29 1 #"\n" 0 0 24 3 18 #") " 0 0 17 3 49 #"; <| when it is used in a compound expression" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 1 #"f" 0 0 24 3 1 #" " 0 0 21 3 1 #"4" 0 0 24 3 14 #") " 0 0 17 3 62 #"; use function f, make parameter x have the value of argument " 0 0 17 3 1 #"4" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 1 #"f" 0 0 24 3 1 #" " 0 0 21 3 2 #"10" 0 0 24 3 13 #") " 0 0 17 3 62 #"; use function f, make parameter x have the value of argument " 0 0 17 3 2 #"10" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 1 #"f" 0 0 24 3 1 #" " 0 0 14 3 7 #"MAX-YOG" 0 0 24 3 8 #") " 0 0 17 3 62 #"; use function f, make parameter x have the value of argument " 0 0 17 3 7 #"MAX-YOG" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 15 #"; DESIGN RECIPE" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 43 #"; let's rewrite f to make it more readable," 0 0 24 29 1 #"\n" 0 0 17 3 80 (10 80 ; and demo our design recipe! <-- a methodical approach to writing a function ) 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 57 #"; STEP 1: write a signature comment for your new function" 0 0 24 29 1 #"\n" 0 0 17 3 62 #"; * reminder: CLASS STYLE: only use *type* names for the" 0 0 24 29 1 #"\n" 0 0 17 3 69 (11 69 ; expected arguments and return type for your function-to-be! ) 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 24 29 1 #"\n" 0 0 17 3 63 #"; Here, I decide that triple is a more-descriptive name than f!" 0 0 24 29 1 #"\n" 0 0 17 3 49 #"; and it expects one argument of type number," 0 0 24 29 1 #"\n" 0 0 17 3 44 #"; and it returns a value of type number:" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 37 #"; signature: triple: number -> number" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 48 #"; STEP 2: write a purpose statement comment for " 0 0 17 3 4 #"your" 0 0 24 29 1 #"\n" 0 0 17 3 13 #"; function" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 29 #"; purpose: expects any number" 0 0 24 29 1 #"\n" 0 0 17 3 41 #"; and returns three times that number" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 35 #"; STEP 3: write the function header" 0 0 24 29 1 #"\n" 0 0 17 3 45 #"; (with a default body of ... for NOWWWWW)" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 1 #"(" 0 0 17 3 6 #"define" 0 0 17 3 2 #" (" 0 0 17 3 6 #"triple" 0 0 17 3 1 #" " 0 0 17 3 6 #"a-num)" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 7 #" ..." 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 17 3 44 #"; STEP 4: write at least TWO tests for your " 0 0 17 3 8 #"function" 0 0 24 29 1 #"\n" 0 0 17 3 24 #"; (and sometimes more)" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 24 29 1 #"\n" 0 0 17 3 67 #"; test: an example call of your function, with specific argument(s)" 0 0 24 29 1 #"\n" 0 0 17 3 65 #"; you choose, AND what that example call's value SHOULD be," 0 0 24 29 1 #"\n" 0 0 17 3 64 #"; if it works -- and in Racket, you can use a check-expect" 0 0 24 29 1 #"\n" 0 0 17 3 64 #"; expression whose arguments are this example call and its" 0 0 24 29 1 #"\n" 0 0 17 3 36 #"; expected value for each test" 0 0 24 29 1 #"\n" 0 0 17 3 64 #"; (there are several other possible check- functions for testing" 0 0 24 29 1 #"\n" 0 0 17 3 49 #"; also -- we'll get to some of those later)" 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 6 #"triple" 0 0 24 3 1 #" " 0 0 21 3 1 #"3" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 14 #" " 0 0 21 3 1 #"9" 0 0 24 3 1 #")" 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 6 #"triple" 0 0 24 3 1 #" " 0 0 21 3 2 #"12" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 15 #" (" 0 0 14 3 1 #"*" 0 0 24 3 1 #" " 0 0 21 3 2 #"12" 0 0 24 3 1 #" " 0 0 21 3 1 #"3" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 46 #"; STEP 5 - replace the default body expression" 0 0 24 29 1 #"\n" 0 0 17 3 43 #"; with one doing what you want that uses" 0 0 24 29 1 #"\n" 0 0 17 3 21 #"; the parameter(s)" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 0 0 24 29 1 #"\n" 0 0 17 3 61 #"; (in class, I commented out the earlier version and repasted" 0 0 24 29 1 #"\n" 0 0 17 3 67 #"; it here, with the actual body expression replacing the ... --" 0 0 24 29 1 #"\n" 0 0 17 3 60 #"; to EMPHASIZE that we write the tests BEFORE completing the" 0 0 24 29 1 #"\n" 0 0 17 3 22 #"; function body --" 0 0 24 29 1 #"\n" 0 0 17 3 62 #"; but when you are using the design recipe, it is FINE to just" 0 0 24 29 1 #"\n" 0 0 17 3 51 #"; go up and REPLACE the ... in Step 3's result)" 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 6 #"triple" 0 0 24 3 1 #" " 0 0 14 3 5 #"a-num" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 5 #" (" 0 0 14 3 1 #"*" 0 0 24 3 1 #" " 0 0 14 3 5 #"a-num" 0 0 24 3 1 #" " 0 0 21 3 1 #"3" 0 0 24 3 1 #")" 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 17 3 6 #";-----" 0 0 24 29 1 #"\n" 0 0 17 3 50 #"; and now that you have defined a function triple," 0 0 24 29 1 #"\n" 0 0 17 3 35 #"; you can use triple in compoun" 0 0 17 3 14 #"d expressions!" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 6 #"triple" 0 0 24 3 1 #" " 0 0 14 3 7 #"MAX-YOG" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 63 #"; ANOTHER example of writing a function using the design recipe" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 43 #"; I want to be able to generate a teal star" 0 0 24 29 1 #"\n" 0 0 17 3 24 #"; of a size I specify" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 6 #";=====" 0 0 24 29 1 #"\n" 0 0 17 3 39 #"; signature: teal-star: number -> image" 0 0 24 29 1 #"\n" 0 0 17 3 47 #"; purpose: expects the desired distance between" 0 0 24 29 1 #"\n" 0 0 17 3 45 #"; a star's points in pixels, and returns a " 0 0 17 3 5 #"solid" 0 0 24 29 1 #"\n" 0 0 17 3 26 #"; teal star of that size" 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 9 #"teal-star" 0 0 24 3 1 #" " 0 0 21 3 2 #"10" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 15 #" (" 0 0 14 3 4 #"star" 0 0 24 3 1 #" " 0 0 21 3 2 #"10" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"solid\"" 0 0 24 3 1 #" " 0 0 19 3 6 #"\"teal\"" 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 9 #"teal-star" 0 0 24 3 1 #" " 0 0 21 3 2 #"50" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 15 #" (" 0 0 14 3 4 #"star" 0 0 24 3 1 #" " 0 0 21 3 2 #"50" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"solid\"" 0 0 24 3 1 #" " 0 0 19 3 6 #"\"teal\"" 0 0 24 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 9 #"teal-star" 0 0 24 3 1 #" " 0 0 14 3 9 #"edge-size" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 5 #" (" 0 0 14 3 4 #"star" 0 0 24 3 1 #" " 0 0 14 3 9 #"edge-size" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"solid\"" 0 0 24 3 1 #" " 0 0 19 3 6 #"\"teal\"" 0 0 24 3 1 #")" 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 3 1 #"(" 0 0 14 3 9 #"teal-star" 0 0 24 3 1 #" " 0 0 21 3 3 #"100" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 9 #"teal-star" 0 0 24 3 1 #" " 0 0 14 3 7 #"MAX-YOG" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" " 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0