#reader(lib"read.ss""wxme")WXME0108 ## #| This file uses the GRacket editor format. Open this file in DrRacket version 6.1 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/ |# 31 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 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 72 0 1 #"\0" 0 75 1 #"\0" 0 12 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 6 #"Menlo\0" 0 21 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 1 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 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 92 -1 93 -1 -1 0 1 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 -1 92 93 -1 -1 -1 0 1 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 0 0 175 0 0 0 -1 -1 2 17 #"text:ports value\0" 0 -1 1 #"\0" 1 0 -1 92 -1 93 -1 -1 0 1 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 -1 92 -1 93 -1 -1 0 1 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 -1 92 -1 93 -1 -1 0 1 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 -1 92 -1 93 -1 -1 0 1 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 -1 92 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 194 116 31 0 0 0 -1 -1 2 38 #"framework:syntax-color:scheme:comment\0" 0 -1 1 #"\0" 1 0 -1 92 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 194 116 31 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 92 -1 93 -1 -1 0 1 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 -1 92 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 41 128 38 0 0 0 -1 -1 2 35 #"framework:syntax-color:scheme:text\0" 0 -1 1 #"\0" 1 0 -1 92 -1 93 -1 -1 0 1 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 -1 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 -1 92 -1 93 -1 -1 0 1 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 -1 92 -1 93 -1 -1 0 1 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 -1 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 -1 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 178 34 34 0 0 0 -1 -1 2 37 #"drracket:check-syntax:unused-require\0" 0 -1 1 #"\0" 1 0 -1 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 0 116 0 0 0 0 -1 -1 2 48 #"drracket:check-syntax:unk-obligation-style-pref\0" 0 -1 1 #"\0" 1 0 -1 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 92 -1 93 -1 -1 0 1 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 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 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 255 255 255 -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 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 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 255 255 255 -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 1.0 1.0 1.0 0 100 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 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 1.0 1.0 1.0 65 105 225 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 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 255 255 255 -1 -1 21 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 255 255 255 -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 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 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 200 0 0 0 0 0 -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 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 0 944 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 179 ( #"#reader(lib \"htdp-beginner-reader.ss\" \"lang\")((modname |#lect11-" #"12|) (read-case-sensitive #t) (teachpacks ()) (htdp-settings #(#t co" #"nstructor repeating-decimal #f #t none #f ())))" ) 0 0 4 29 1 #"\n" 0 0 17 3 12 #"; A book is:" 0 0 24 29 1 #"\n" 0 0 17 3 52 #"; (make-book [string] [string] [number] [boolean])" 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 #"book" 0 0 24 3 2 #" (" 0 0 14 3 5 #"title" 0 0 24 3 1 #" " 0 0 14 3 6 #"author" 0 0 24 3 1 #" " 0 0 14 3 5 #"pages" 0 0 24 3 1 #" " 0 0 14 3 6 #"copyR?" 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 17 3 23 #"; Examples of the data:" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 9 #"make-book" 0 0 24 3 1 #" " 0 0 19 3 17 #"\"The Soul of Wit\"" 0 0 24 3 1 #" " 0 0 19 3 8 #"\"Shorty\"" 0 0 24 3 1 #" " 0 0 21 3 1 #"0" 0 0 24 3 1 #" " 0 0 14 3 5 #"false" 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 2 #"b1" 0 0 24 3 2 #" (" 0 0 14 3 9 #"make-book" 0 0 24 3 1 #" " 0 0 19 3 20 #"\"The Cat in the Hat\"" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"Seuss\"" 0 0 24 3 1 #" " 0 0 21 3 2 #"31" 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 29 1 #"\n" 0 0 17 3 42 #"; Template for any book-handling function:" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 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 #"func-for-book" 0 0 24 3 1 #" " 0 0 14 3 6 #"a-book" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 14 3 3 #"..." 0 0 24 3 2 #" (" 0 0 14 3 10 #"book-title" 0 0 24 3 1 #" " 0 0 14 3 6 #"a-book" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" " 0 0 14 3 3 #"..." 0 0 24 3 2 #" (" 0 0 14 3 11 #"book-author" 0 0 24 3 1 #" " 0 0 14 3 6 #"a-book" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" " 0 0 14 3 3 #"..." 0 0 24 3 2 #" (" 0 0 14 3 10 #"book-pages" 0 0 24 3 1 #" " 0 0 14 3 6 #"a-book" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" " 0 0 14 3 3 #"..." 0 0 24 3 2 #" (" 0 0 14 3 11 #"book-copyR?" 0 0 24 3 1 #" " 0 0 14 3 6 #"a-book" 0 0 24 3 2 #"))" 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 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 49 #"; Note that 'define-struct' automagically creates" 0 0 24 29 1 #"\n" 0 0 17 3 19 #"; functions for us:" 0 0 24 29 1 #"\n" 0 0 17 3 14 #"; Constructor:" 0 0 24 29 1 #"\n" 0 0 17 3 54 #"; make-book: string, string, number, boolean -> book" 0 0 24 29 1 #"\n" 0 0 17 3 12 #"; Selectors:" 0 0 24 29 1 #"\n" 0 0 17 3 32 #"; book-title : book -> string" 0 0 24 29 1 #"\n" 0 0 17 3 32 #"; book-author : book -> string" 0 0 24 29 1 #"\n" 0 0 17 3 32 #"; book-pages : book -> number" 0 0 24 29 1 #"\n" 0 0 17 3 33 #"; book-copyR? : book -> boolean" 0 0 24 29 1 #"\n" 0 0 17 3 12 #"; Predicate:" 0 0 24 29 1 #"\n" 0 0 17 3 27 #"; book? : ANY -> boolean " 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 17 3 31 #"; book->string : book -> string" 0 0 24 29 1 #"\n" 0 0 17 3 56 #"; Convert a book into a nice printable format for users." 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 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 #"book->string" 0 0 24 3 1 #" " 0 0 14 3 6 #"a-book" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 14 3 13 #"string-append" 0 0 24 3 2 #" (" 0 0 14 3 10 #"book-title" 0 0 24 3 1 #" " 0 0 14 3 6 #"a-book" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 17 #" " 0 0 19 3 7 #"\", by \"" 0 0 24 29 1 #"\n" 0 0 24 3 18 #" (" 0 0 14 3 11 #"book-author" 0 0 24 3 1 #" " 0 0 14 3 6 #"a-book" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 17 #" " 0 0 19 3 4 #"\" (\"" 0 0 24 29 1 #"\n" 0 0 24 3 18 #" (" 0 0 14 3 14 #"number->string" 0 0 24 3 2 #" (" 0 0 14 3 10 #"book-pages" 0 0 24 3 1 #" " 0 0 14 3 6 #"a-book" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 17 #" " 0 0 19 3 5 #"\"pp)\"" 0 0 24 29 1 #"\n" 0 0 24 3 18 #" (" 0 0 14 3 2 #"if" 0 0 24 3 2 #" (" 0 0 14 3 11 #"book-copyR?" 0 0 24 3 1 #" " 0 0 14 3 6 #"a-book" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 21 #" " 0 0 19 3 6 #"\" (c)\"" 0 0 24 29 1 #"\n" 0 0 24 3 21 #" " 0 0 19 3 2 #"\"\"" 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 12 #"book->string" 0 0 24 3 1 #" " 0 0 14 3 2 #"b1" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 14 #" " 0 0 19 3 41 #"\"The Cat in the Hat, by Seuss (31pp) (c)\"" 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 12 #"book->string" 0 0 24 3 2 #" (" 0 0 14 3 9 #"make-book" 0 0 24 3 1 #" " 0 0 19 3 17 #"\"The Soul of Wit\"" 0 0 24 3 1 #" " 0 0 19 3 8 #"\"Shorty\"" 0 0 24 3 1 #" " 0 0 21 3 1 #"0" 0 0 24 3 1 #" " 0 0 14 3 5 #"false" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 14 #" " 0 0 19 3 34 #"\"The Soul of Wit, by Shorty (0pp)\"" 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 17 3 14 #";;;;;;;;;;;;;;" 0 0 24 29 1 #"\n" 0 0 17 3 44 #"; derive-from : book, string, number -> book" 0 0 24 29 1 #"\n" 0 0 17 3 48 #"; Create a brand new book, based on an original." 0 0 24 29 1 #"\n" 0 0 17 3 67 #"; The result's author will be the original author & the new-author," 0 0 24 29 1 #"\n" 0 0 17 3 49 #"; and the result has pages added to the original." 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 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 #"derive-from" 0 0 24 3 1 #" " 0 0 14 3 6 #"a-book" 0 0 24 3 1 #" " 0 0 14 3 10 #"new-author" 0 0 24 3 1 #" " 0 0 14 3 11 #"pages-added" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 14 3 9 #"make-book" 0 0 24 3 2 #" (" 0 0 14 3 13 #"string-append" 0 0 24 3 1 #" " 0 0 19 3 9 #"\"Son of \"" 0 0 24 3 2 #" (" 0 0 14 3 10 #"book-title" 0 0 24 3 1 #" " 0 0 14 3 6 #"a-book" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 14 #" (" 0 0 14 3 13 #"string-append" 0 0 24 3 2 #" (" 0 0 14 3 11 #"book-author" 0 0 24 3 1 #" " 0 0 14 3 6 #"a-book" 0 0 24 3 2 #") " 0 0 19 3 7 #"\" and \"" 0 0 24 3 1 #" " 0 0 14 3 10 #"new-author" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 14 #" (" 0 0 14 3 1 #"+" 0 0 24 3 2 #" (" 0 0 14 3 10 #"book-pages" 0 0 24 3 1 #" " 0 0 14 3 6 #"a-book" 0 0 24 3 2 #") " 0 0 14 3 11 #"pages-added" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 13 #" " 0 0 14 3 5 #"false" 0 0 24 3 2 #"))" 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 11 #"derive-from" 0 0 24 3 2 #" (" 0 0 14 3 9 #"make-book" 0 0 24 3 1 #" " 0 0 19 3 17 #"\"The Soul of Wit\"" 0 0 24 3 1 #" " 0 0 19 3 8 #"\"Shorty\"" 0 0 24 3 1 #" " 0 0 21 3 1 #"0" 0 0 24 3 1 #" " 0 0 14 3 5 #"false" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 27 #" " 0 0 19 3 12 #"\"Dr Barland\"" 0 0 24 29 1 #"\n" 0 0 24 3 27 #" " 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 9 #"make-book" 0 0 24 3 1 #" " 0 0 19 3 24 #"\"Son of The Soul of Wit\"" 0 0 24 29 1 #"\n" 0 0 24 3 25 #" " 0 0 19 3 23 #"\"Shorty and Dr Barland\"" 0 0 24 29 1 #"\n" 0 0 24 3 25 #" " 0 0 21 3 2 #"10" 0 0 24 29 1 #"\n" 0 0 24 3 25 #" " 0 0 14 3 5 #"false" 0 0 24 3 2 #"))" 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 11 #"derive-from" 0 0 24 3 1 #" " 0 0 14 3 2 #"b1" 0 0 24 29 1 #"\n" 0 0 24 3 27 #" " 0 0 19 3 13 #"\"John Madden\"" 0 0 24 29 1 #"\n" 0 0 24 3 27 #" " 0 0 21 3 2 #"20" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 15 #" (" 0 0 14 3 9 #"make-book" 0 0 24 3 1 #" " 0 0 19 3 27 #"\"Son of The Cat in the Hat\"" 0 0 24 29 1 #"\n" 0 0 24 3 25 #" " 0 0 19 3 23 #"\"Seuss and John Madden\"" 0 0 24 29 1 #"\n" 0 0 24 3 25 #" " 0 0 21 3 2 #"51" 0 0 24 29 1 #"\n" 0 0 24 3 25 #" " 0 0 14 3 5 #"false" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 17 3 9 #"; recall:" 0 0 24 29 1 #"\n" 0 0 17 3 49 #";(make-book \"The Cat in the Hat\" \"Seuss\" 31 true)" 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 17 3 61 #";;;;;;;;;;;;;;;;;;;;;;;; union-of-structs ;;;;;;;;;;;;;;;;;;" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 10 #";;;;;;;;;;" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 11 #"; A DVD is:" 0 0 24 29 1 #"\n" 0 0 17 3 42 #"; (make-dvd [string] [number] [symbol])" 0 0 24 29 1 #"\n" 0 0 17 3 60 #"; where `time` is the running time in minutes (non-negative)" 0 0 24 29 1 #"\n" 0 0 17 3 32 #"; and title is non-empty string." 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 12 #";;;;;;;;;;;;" 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 3 #"dvd" 0 0 24 3 2 #" (" 0 0 14 3 5 #"title" 0 0 24 3 1 #" " 0 0 14 3 4 #"time" 0 0 24 3 1 #" " 0 0 14 3 6 #"rating" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 23 #"; Examples of the data:" 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 4 #"once" 0 0 24 3 2 #" (" 0 0 14 3 8 #"make-dvd" 0 0 24 3 1 #" " 0 0 19 3 6 #"\"Once\"" 0 0 24 3 1 #" " 0 0 21 3 3 #"100" 0 0 24 3 1 #" " 0 0 21 3 1 #"'" 0 0 14 3 5 #"PG-13" 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 4 #"botr" 0 0 24 3 2 #" (" 0 0 14 3 8 #"make-dvd" 0 0 24 3 1 #" " 0 0 19 3 20 #"\"Bored of the Rings\"" 0 0 24 3 1 #" " 0 0 21 3 4 #"4892" 0 0 24 3 1 #" " 0 0 21 3 1 #"'" 0 0 14 3 1 #"R" 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 4 #"dvd0" 0 0 24 3 2 #" (" 0 0 14 3 8 #"make-dvd" 0 0 24 3 1 #" " 0 0 19 3 3 #"\" \"" 0 0 24 3 1 #" " 0 0 21 3 1 #"0" 0 0 24 3 1 #" " 0 0 21 3 1 #"'" 0 0 14 3 1 #"G" 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 17 3 25 #";;;;;;;;;;;;;;;;;;;;;;;;;" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 22 #"; A lib-item is either" 0 0 24 29 1 #"\n" 0 0 17 3 15 #"; - a book, or" 0 0 24 29 1 #"\n" 0 0 17 3 11 #"; - a dvd." 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 23 #"; examples of the data:" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 8 #"make-dvd" 0 0 24 3 1 #" " 0 0 19 3 6 #"\"Once\"" 0 0 24 3 1 #" " 0 0 21 3 3 #"100" 0 0 24 3 1 #" " 0 0 21 3 1 #"'" 0 0 14 3 5 #"PG-13" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 9 #"make-book" 0 0 24 3 1 #" " 0 0 19 3 20 #"\"The Cat in the Hat\"" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"Seuss\"" 0 0 24 3 1 #" " 0 0 21 3 2 #"31" 0 0 24 3 1 #" " 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 36 #";; Functions which handle lib-items:" 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 #"func-for-lib-item" 0 0 24 3 1 #" " 0 0 14 3 3 #"ali" 0 0 24 3 3 #") " 0 0 17 3 22 #"; ali for \"a lib item\"" 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 5 #"book?" 0 0 24 3 1 #" " 0 0 14 3 3 #"ali" 0 0 24 3 3 #") (" 0 0 14 3 3 #"..." 0 0 24 3 1 #"(" 0 0 14 3 10 #"book-title" 0 0 24 3 1 #" " 0 0 14 3 3 #"ali" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 22 #" " 0 0 14 3 3 #"..." 0 0 24 3 1 #"(" 0 0 14 3 11 #"book-author" 0 0 24 3 1 #" " 0 0 14 3 3 #"ali" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 22 #" " 0 0 14 3 3 #"..." 0 0 24 3 1 #"(" 0 0 14 3 10 #"book-pages" 0 0 24 3 1 #" " 0 0 14 3 3 #"ali" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 22 #" " 0 0 14 3 3 #"..." 0 0 24 3 1 #"(" 0 0 14 3 11 #"book-copyR?" 0 0 24 3 1 #" " 0 0 14 3 3 #"ali" 0 0 24 3 3 #"))]" 0 0 24 29 1 #"\n" 0 0 24 3 10 #" [(" 0 0 14 3 4 #"dvd?" 0 0 24 3 1 #" " 0 0 14 3 3 #"ali" 0 0 24 3 4 #") (" 0 0 14 3 3 #"..." 0 0 24 3 1 #"(" 0 0 14 3 9 #"dvd-title" 0 0 24 3 1 #" " 0 0 14 3 3 #"ali" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 22 #" " 0 0 14 3 3 #"..." 0 0 24 3 1 #"(" 0 0 14 3 8 #"dvd-time" 0 0 24 3 1 #" " 0 0 14 3 3 #"ali" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 22 #" " 0 0 14 3 3 #"..." 0 0 24 3 1 #"(" 0 0 14 3 10 #"dvd-rating" 0 0 24 3 1 #" " 0 0 14 3 3 #"ali" 0 0 24 3 5 #"))]))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 37 #";; time-to-waste : lib-item -> number" 0 0 24 29 1 #"\n" 0 0 17 3 66 #";; Return how long the lib-item takes to be experienced (in hours)" 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 #"time-to-waste" 0 0 24 3 1 #" " 0 0 14 3 3 #"ali" 0 0 24 3 3 #") " 0 0 17 3 22 #"; ali for \"a lib item\"" 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 5 #"book?" 0 0 24 3 1 #" " 0 0 14 3 3 #"ali" 0 0 24 3 3 #") (" 0 0 14 3 1 #"/" 0 0 24 3 2 #" (" 0 0 14 3 1 #"*" 0 0 24 3 1 #" " 0 0 21 3 1 #"2" 0 0 24 3 2 #" (" 0 0 14 3 10 #"book-pages" 0 0 24 3 1 #" " 0 0 14 3 3 #"ali" 0 0 24 3 3 #")) " 0 0 21 3 2 #"60" 0 0 24 3 2 #")]" 0 0 24 29 1 #"\n" 0 0 24 3 10 #" [(" 0 0 14 3 4 #"dvd?" 0 0 24 3 1 #" " 0 0 14 3 3 #"ali" 0 0 24 3 4 #") (" 0 0 14 3 1 #"+" 0 0 24 3 1 #" " 0 0 21 3 1 #"5" 0 0 24 3 2 #" (" 0 0 14 3 8 #"dvd-time" 0 0 24 3 1 #" " 0 0 14 3 3 #"ali" 0 0 24 3 3 #")) " 0 0 17 3 2 #"#;" 0 0 24 3 1 #"(" 0 0 14 3 11 #"actual-time" 0 0 24 3 1 #" " 0 0 14 3 3 #"ali" 0 0 24 3 4 #")]))" 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 14 3 12 #"check-expect" 0 0 24 3 2 #" (" 0 0 14 3 13 #"time-to-waste" 0 0 24 3 2 #" (" 0 0 14 3 9 #"make-book" 0 0 24 3 1 #" " 0 0 19 3 17 #"\"The Soul of Wit\"" 0 0 24 3 1 #" " 0 0 19 3 8 #"\"Shorty\"" 0 0 24 3 1 #" " 0 0 21 3 1 #"0" 0 0 24 3 1 #" " 0 0 14 3 5 #"false" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 14 #" " 0 0 21 3 1 #"0" 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 13 #"time-to-waste" 0 0 24 3 2 #" (" 0 0 14 3 9 #"make-book" 0 0 24 3 1 #" " 0 0 19 3 20 #"\"The Cat in the Hat\"" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"Seuss\"" 0 0 24 3 1 #" " 0 0 21 3 2 #"31" 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 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 4 #"2/60" 0 0 24 3 2 #"))" 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 13 #"time-to-waste" 0 0 24 3 2 #" (" 0 0 14 3 8 #"make-dvd" 0 0 24 3 1 #" " 0 0 19 3 20 #"\"Bored of the Rings\"" 0 0 24 3 1 #" " 0 0 21 3 3 #"480" 0 0 24 3 1 #" " 0 0 21 3 1 #"'" 0 0 14 3 1 #"R" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 14 #" " 0 0 21 3 3 #"485" 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 17 3 15 #"; A box-set is:" 0 0 24 29 1 #"\n" 0 0 17 3 38 #"; (make-box-set [string] [dvd] [dvd])" 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 #"box-set" 0 0 24 3 2 #" (" 0 0 14 3 5 #"title" 0 0 24 3 1 #" " 0 0 14 3 5 #"disc1" 0 0 24 3 1 #" " 0 0 14 3 5 #"disc2" 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 17 3 23 #"; Examples of the data:" 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 3 #"bs1" 0 0 24 3 2 #" (" 0 0 14 3 12 #"make-box-set" 0 0 24 3 1 #" " 0 0 19 3 25 #"\"awesomesauce collection\"" 0 0 24 3 1 #" " 0 0 14 3 4 #"botr" 0 0 24 3 1 #" " 0 0 14 3 4 #"once" 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 3 #"bs2" 0 0 24 3 2 #" (" 0 0 14 3 12 #"make-box-set" 0 0 24 3 1 #" " 0 0 19 3 19 #"\"stuff-for-schools\"" 0 0 24 3 1 #" " 0 0 24 29 1 #"\n" 0 0 24 3 26 #" " 0 0 14 3 4 #"dvd0" 0 0 24 3 1 #" " 0 0 24 29 1 #"\n" 0 0 24 3 27 #" (" 0 0 14 3 8 #"make-dvd" 0 0 24 3 1 #" " 0 0 19 3 28 #"\"industrial for the fugure!\"" 0 0 24 3 1 #" " 0 0 21 3 2 #"23" 0 0 24 3 1 #" " 0 0 21 3 1 #"'" 0 0 14 3 1 #"G" 0 0 24 3 3 #")))" 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 14 3 12 #"check-expect" 0 0 24 3 2 #" (" 0 0 14 3 12 #"longest-from" 0 0 24 3 1 #" " 0 0 14 3 3 #"bs2" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 15 #" (" 0 0 14 3 8 #"make-dvd" 0 0 24 3 1 #" " 0 0 19 3 28 #"\"industrial for the fugure!\"" 0 0 24 3 1 #" " 0 0 21 3 2 #"23" 0 0 24 3 1 #" " 0 0 21 3 1 #"'" 0 0 14 3 1 #"G" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 31 #"; longest-from : box-set -> dvd" 0 0 24 29 1 #"\n" 0 0 17 3 1 #";" 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 #"longest-from" 0 0 24 3 1 #" " 0 0 14 3 2 #"bx" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 14 3 2 #"if" 0 0 24 3 2 #" (" 0 0 14 3 1 #">" 0 0 24 3 2 #" (" 0 0 14 3 8 #"dvd-time" 0 0 24 3 2 #" (" 0 0 14 3 13 #"box-set-disc1" 0 0 24 3 1 #" " 0 0 14 3 2 #"bx" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 3 10 #" (" 0 0 14 3 8 #"dvd-time" 0 0 24 3 2 #" (" 0 0 14 3 13 #"box-set-disc2" 0 0 24 3 1 #" " 0 0 14 3 2 #"bx" 0 0 24 3 3 #")))" 0 0 24 29 1 #"\n" 0 0 24 3 7 #" (" 0 0 14 3 13 #"box-set-disc1" 0 0 24 3 1 #" " 0 0 14 3 2 #"bx" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 7 #" (" 0 0 14 3 13 #"box-set-disc2" 0 0 24 3 1 #" " 0 0 14 3 2 #"bx" 0 0 24 3 3 #")))" 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 17 3 70 ( #"; When dealing with a struct whose fields are other complicated type" #"s," ) 0 0 24 29 1 #"\n" 0 0 24 3 3 #" " 0 0 17 3 64 #"; extract the book and shelf-title (like you do for any struct)," 0 0 24 29 1 #"\n" 0 0 24 3 3 #" " 0 0 17 3 57 #"; but *don't* start pulling out all each books' fields --" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" " 0 0 17 3 65 #"; that's taking it too far! Instead, defer the entire book to a " 0 0 17 3 6 #"helper" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" " 0 0 17 3 29 #"; (like time-to-waste, here)." 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 17 3 40 #";;;;;;; last example: a struct-of-unions" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 17 #"; A lib-shelf is " 0 0 24 29 1 #"\n" 0 0 17 3 26 #"; (make-lib-shelf [string]" 0 0 24 29 1 #"\n" 0 0 17 3 29 #"; [lib-item] " 0 0 24 29 1 #"\n" 0 0 17 3 29 #"; [lib-item])" 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 9 #"lib-shelf" 0 0 24 3 2 #" (" 0 0 14 3 5 #"label" 0 0 24 3 1 #" " 0 0 14 3 3 #"li1" 0 0 24 3 1 #" " 0 0 14 3 3 #"li2" 0 0 24 3 2 #"))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 17 3 23 #"; Examples of the data:" 0 0 24 29 1 #"\n" 0 0 24 3 1 #"(" 0 0 14 3 14 #"make-lib-shelf" 0 0 24 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 12 #"fiction B-C\"" 0 0 24 29 1 #"\n" 0 0 24 3 17 #" (" 0 0 14 3 9 #"make-book" 0 0 24 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 3 #"The" 0 0 19 3 1 #" " 0 0 19 3 3 #"Cat" 0 0 19 3 1 #" " 0 0 19 3 2 #"in" 0 0 19 3 1 #" " 0 0 19 3 8 #"the Hat\"" 0 0 24 3 1 #" " 0 0 19 3 7 #"\"Seuss\"" 0 0 24 3 1 #" " 0 0 21 3 2 #"31" 0 0 24 3 1 #" " 0 0 14 3 4 #"true" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 16 #" " 0 0 14 3 4 #"botr" 0 0 24 3 1 #")" 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 18 #"func-for-lib-shelf" 0 0 24 3 1 #" " 0 0 14 3 3 #"als" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" (" 0 0 14 3 3 #"..." 0 0 24 3 1 #"(" 0 0 14 3 15 #"lib-shelf-label" 0 0 24 3 1 #" " 0 0 14 3 3 #"als" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" " 0 0 14 3 3 #"..." 0 0 24 3 1 #"(" 0 0 14 3 13 #"lib-shelf-li1" 0 0 24 3 1 #" " 0 0 14 3 3 #"als" 0 0 24 3 1 #")" 0 0 24 29 1 #"\n" 0 0 24 3 3 #" " 0 0 14 3 3 #"..." 0 0 24 3 1 #"(" 0 0 14 3 13 #"lib-shelf-li2" 0 0 24 3 1 #" " 0 0 14 3 3 #"als" 0 0 24 3 3 #")))" 0 0 24 29 1 #"\n" 0 0 24 29 1 #"\n" 0 0 24 3 2 #" " 0 0 17 3 63 #"; just call functions that handle a lib-item on these fields --" 0 0 24 29 1 #"\n" 0 0 24 3 2 #" " 0 0 17 3 52 #"; DON'T go and (for each of the three) try to have a" 0 0 24 29 1 #"\n" 0 0 24 3 2 #" " 0 0 17 3 44 #"; cond-with-two-branches. Defer to helpers." 0 0 24 29 1 #"\n" 0 0 24 3 2 #" " 0 0 24 29 1 #"\n" 0 0