AaB:ld HH $ @d HHHHff@  d Footnote TableFootnoted** .\t.\tu/ - l:;,.!?6 `# `TOCHeading1Heading2   EquationVariablesHQej @e @f FgmAohKCiH5kmE/lEs FvcFfxo a q b a 4 ) I > )<$lastpagenum> *<$monthname> <$daynum>, <$year> +"<$monthnum>/<$daynum>/<$shortyear> ,;<$monthname> <$daynum>, <$year> <$hour>:<$minute00> <$ampm>> -"<$monthnum>/<$daynum>/<$shortyear> .<$monthname> <$daynum>, <$year>@ /"<$monthnum>/<$daynum>/<$shortyear> 0 <$fullfilename> 1 <$filename> 2 <$paratext[Title]> 3 <$paratext[Heading1]> 4 <$curpagenum> 5 <$marker1> 6 <$marker2> 7 (Continued)Fo 8+ (Sheet <$tblsheetnum> of <$tblsheetcount>).\ 9Heading & Page <$paratext> on page<$pagenum> :Pagepage<$pagenum>He ;See Heading & Page%See <$paratext> on page<$pagenum>. < Table All7Table<$paranumonly>, <$paratext>, on page<$pagenum>i =Table Number & Page'Table<$paranumonly> on page<$pagenum>  FFAm HHAc JJ NN PP RlA  _mo5y  va<$5|  v;5  u>nuAS z j >:5 ! u>>5 " t"hnG # mor@ $ j ymoAt % d, As & j j"Au ' j j/umAa ( j ja G )  vi>Av * j j naA + a paA , j e A - j jediA . j jcuA / j j A 0 j G 1 a a A 2 j )A 3 j heA 4 z $etA 5 j j\HeA 6 j jearA 7 j jppaA 8 j jA 9 j jnHeG : v ve& G ; j j<exEf < j jnuG = j je A > j vnuA ? j jpt>A @ j j<umA A j jambA B j j'<$A C j j>geA D j jA E j jA F jFA G v vA H v vAcB I j jB J j jA K j jA L j jA M j jA N j jRA O j j G+ P j jvG, Q v vvA R  vuA S j vzA T j vuA U j jtA V j jA W j jjA X j jA Y  jjG3 Z v vjG8 [ v vjG; \ j jA ] j vjA ^ j jA _ j jjA ` j jjA a j jjA b j jjA c j jA d j jaA e j jjA f j jA g j jzG< h v vjG? i j jjA j vjA k j vjA l j jjA m j jvA n j jjA o j jjA p j jjA q j jjA r j jjA s j jjGO t v vjE u  jjGR v j jjGU w j jjGV x v vjA y j vA z j jvA { j jvA | j jjA } j jjA ~ j jjA  j jjA j vjG] v vjGb v bjB  vjB j jvB j jB j jjGg v vjGj v vjGq jE j jjE jjB  vB v vvB j vvB j vjB j vjB j vjB j jjB! j jjB" j jjB$ j vjB% j vjB& j vjB' j vjGr v vjB+  jjB, v vvB- j vjB. j jB/ j jjB0 j jjB1 j jjB2 j jjGs v vjB8 j jjB9 j jjB: j jjB; j jjG j jvB=  jGt v vjG} v vjG v vvG jG v vjG v vjG v vjG v vjG v vjH3  vjH4 v vjB j jvB j jvB j jB j jjB j jjB j jjB jvB j jvB j jB j jjB j jB j jH8 v vvH9 v vjG j vjG  vjC j jjH: v vjG b vjG j jjH; j jjB a vjG! jjB b vjB b ~vG$  jB j jvB j jjB j jjB j jjG% j jjG& v vjH< q jjH= q jvH> j jjH? j jjH@ j jjB j jjB j jjB j jHA j jvHB j jvHC j jvC v vC j vvC j jvC j jvC j jvC j jvC j jHD j jvC j jjHE j jjHF j jjHG j jjC) j jjC* jjC+ v vC, j vC- j jjC. j jjC/ j jjC0 j jjHH j jvC6 j jvC= j jjC> j jHI j jjCO  vvCR j jbCS jjCV j jjC\ j jaC] j jCp b ~bCq j jbCr jCs  j jjCt  j jjCu  j jjCv  j jjCw  j jjCx  j jvE  v jqHJ  q jqC  ajC a ajC j ajC j jjC j jjC  j jjC  j jjC   jjHK  q jjC  b vvHL  j jjC  b vjHM  j jjC  b vjC  j bjC  j jjC  j jjC  j jjC  j jjC  j jjHN  v jjC  v vjC  j vC j jvC ! j jjC " j jjC # j jjC $ j jjC % j jjC & j jjC ' j jjC (  jjC ) j jjD * j jjD + j jD . vjD / j vD 0 j jjD 1 j jjF5 2 j jjD 3 j jbD 4 j jjD 5 j jD 7  vjD 8 z vjD 9 j jjD : j jjD ; j jjD < j jjD = j jvD > j jqD @ v vD A z vaD B j jjD! C j jjD" D j jjD# E j jjD$ F j jjD% G j jD& H j jqD' I j jbD( J j jjF M bF N b vjF O b bbF P  jF R b vjF S jF T b bjF U b vjF V jF Y v-D [  vvD \ j vjD ] j jjD ^ j jjD _ j jjD ` j jjD a j jjFi b vjFj c j-D e j jjD f j jD g j jjD h j jjD i j jjD j j jD k j jjD l j jjD m j jjD n j jjD o j jjD p j jjD q  jjD r v jFk s z-Fl t jFm u jF w b vjE v vjE j vjE j jjE vvE j jzE j jjE j jjE j jjE j jjF,  vjF8 j jjF; z jjF< j jjF= z jjF b bF b bb5 odq5bjPFFdq6jJHDdq7jj8CDHm3R q897 jjHm3R H RH R FootnoteHr@ q98:7 jHr@ HzHz  Single LineH'q:9<7 j;;Footnote j  5_;:j     HD q<:=7 FmHD HH  Double LineH q=<@7E>?z Double Line j5c>?=j5e?>=F<F= zH q@=B7AA Single Linej5hA@HZqB@C7q TableFootnoteEGxR qCB7 9EGxR EPwEPw  TableFootnoteod@DRRHH5xE5 HHF e   HH5zFN5 HHlEE DHH5{G6 HH@>?HDo d   HH5}HJ6HHlGG HUV 5~I6 HUV AAJUUl  f#e HUV 5JH6HUV lII qApKDLLQhAqLKw _r 'cup[prompt[],prompt[]]HUV 5M5 5xHUV NUUe !  HUV 5NPF55zHUV lMM H$ 5O5 5{H$ PUUe "  H$ 5PN55}H$ lOO HH@QD 5~HHDKR ` % Pair and List Abstractions #) `  ) ->   ; cons: T1, T2 -> Pair QfUP UT` * 3 (car (cons )) =   ; car: Pair -> T1 {UN UT` $ 3 (cdr (cons )) =   ; cdr: Pair -> T2 UL UT`  UJ UT` 3 Lists   h 4  ; List = T X (nil hList) UH UT` & UU* (list ... ) == UF UT` ( < (cons (cons nil))..) UD UT` + 5 UB UT` # 5{ Operations &U@ UT` , - (null? ) -> #t if is nil (#f) ;U> UT` . + (pair? ) -> #t if is a pair 5}PU< UT` - % (define (atom? x) (not (pair? x))) eU: UT` /  zU8 UT` 0 Examples U6 UT h 2 % (define 1-to-4 (list 1 2 3 4))l U4 UT` 5 : 1-to-4 -> (1 2 3 4)   ; NOTE: printed rep for list! U2 UT` 6 UT (car (cdr 1-to-4)) -> 2 U0 UT` 7 Co a+U. UT` 9 UR (pair? (cdddr 1-to-4)) -> #t ->@U, UT` 8  (cdddr 1-to-4) -> (4) UTHH@RD ;HHlUQQ )) dAS UULiHHATS lhHH6 &  lem_2> .U= ` ) coAccessing nth item in a list c) ` .. J ` 5DFor n=0,  list-ref  should return the  car  of the list <k  leBOtherwise,  list-ref  should return the (n-1)st item of the @ U<cdr  of the list. fUT UT` ( rUR UT` 1 ֪; list-ref: List, Int -> T UP UT` < UT(define (list-ref lst n) oUN UT`  (if (= n 0) UL UT` - (car lst) ; UJ UT` fo% (list-ref (cdr lst) (- n 1)))) dUH UT` U0 T2UF UT` ; U.(list-ref 1-to-4 3) -> 3 (HHAUS HHlRXTT dAVXXHHAWV HH5LiTXh ` Copy a list ) ` :    dOtherise,  append  the  cdr  of  list1  with  list2 , and  cons  the UTT @ t- UT` h9 (append (cdr list1))))))  ; recursion :U< UT` Ӫ U: UT` y (define 5-to-7 (list 5 6 7)) U8 UT` UP*(append 5-to-7 1-to-4) -> (5 6 7 1 2 3 4) 1U6 UT` > c HHAXV HHlU[WW  dAYT[[ HHAZY PHH list, th[us ` Square all items in a list  t) `   i (1 4 9 16) UF UT` E U@ T ` F Cube all items in a list > ` G  %UD UT` (c(define (cube-em lst) :UB UT` I Ӫ (if (null? lst) OU@ UT` K in nil dU> UT` L UT (cons (cube (car lst)) tyU< UT` M 3# (cube-em (cdr lst))))) U: UT` N  U8 UT` O 0(cube-em (square-em 1-to-4)) -> (1 64 729 4096)  ` H  HHA[YHHlX^ZZ HdB\st^^HHB]\ t tHH| iefine (s^ h ` R f Map a procedure over a list nt) ` Q UT UH UT` X "(map square 1-to-4) -> (1 4 9 16) UF UT` UT ` ulExample: Scale a list UD UT`  U> T$UB UT`  (define (scale-list lst factor) 9U@ UT`  ! (map (lambda (x) (* x factor)) TNU> UT`  U8 lst)) cU< UT`  -e -xU: UT`  9 ((scale-list 1-to-4 10) -> (10 20 30 40) HHB^\HHl[a]] ddB4_^aaHHB5`_ HH^a ` Y oc Pick odd elements out of a list Q&UT UT` ] Ӫ P;UR UT` e p(define (odds lst) PUP UT` ^ ul (cond ((null? lst) nil) eUN UT` _ UT ((odd? (car lst)) zUL UT` ` UL (cons (car lst) UJ UT` a st" (odds (cdr lst)))) UH UT` b (m (else ->UF UT` c UT (odds (cdr lst))))) UD UT` d le lUB UT` f (odds 1-to-4) -> (1 3) U@ UT` g is s ` j UTFilter : ` Z x) NU> UT` k UT(define (filter pred lst) cU< UT` l -e (cond ((null? lst) nil) xU: UT` m 0) ((pred (car lst)) U8 UT` n  (cons (car lst) U6 UT` o ) (filter pred (cdr lst)))) U4 UT` p ) (else (filter pred (cdr lst))))) U2 UT` q  U0 UT` r (filter odd? 1-to-4) -> (1 3) U. UT` s (filter even? 1-to-4) -> (2 4) HHB7a_ t HHl^x`` yHZFb n((HZUT gUT   h V ls v  THrbFc JUT ? v oddGyd (effUT HHGzed dleHH<  U@fis ` ( FiUsing Tree/List Tools ) ` ٪ k (UB UT` m  nil U@ UT` n  (filter even? #U> UT` o ` (map fib b8U< UT` p ((6 (integers-between 0 n))))) HHG|fdHHl iee dGgfiiHHGhg HHfismmi ` isNested Enumerations [Optional] Extend idea of enumeration - generate more complicated lists, ?  h ٪Ne.g. ordered pairs of positive integers  i  and  j , where k . U `  k ` er d~UT UT` i (map (lambda (i) UR UT` e-# (map (lambda (j) (list i j))  UP UT` od) (integers-between 1 (- i 1))) fUN UT` ns" (integers-between 1 n))  UL UT` Ӫ nUJ UT`  lUH UT` UT UF UT`  &UD UT`  <;UB UT`  PU@ UT`  neU> UT` ))(define (order-pairs n) G|zU< UT`  (accumulate append U: UT`  nil U8 UT`  (map (lambda (i) U6 UT`  - (map (lambda (j) (list i j)) U4 UT`  3 (integers-between 1 (- i 1))) iU2 UT`  . (integers-between 1 n)) )) U0 UT`  (d x `  ra nHHGigHHlflhh nd dGj llUTUTHHGkj THH laUP UT F Fl  ` q 1Summary f) @h nsx ` 1   ` r  HHGljUTHHlikk {FyH6mgTnnhkai nH7nme Dy#< U8'?leq[num[1.00000000,"1"],lessthan[char[j],leq[char[i],char[n]]]]dBvj xx HHBwv U2HH  een 1 n)xUT ` u Enumerate Integers ) ` [  low high) jfUP UT` { nil {UN UT` | UT, (cons low (integers-between (+ low 1) UL UT` } + high)))) lUJ UT` ~  UH UT`  f&(integers-between 5 9) -> (5 6 7 8 9) UF UT` J  HHBxvHHla{ww idBy{{hHHBzy HH3"y U8  {1. ` r[ Examples [) ` h  (55 89 ... 6765) QUR UT`  h `  Fibonacci numbers: '"w"h s )34 `  UT` (define (fib n) rs UT` [ (cond ((= n 0) 0) y UT` eg ((= n 1) 1)  UT`  (else (+ (fib (- n 1)) 4 UT` l # (fib (- n 2)))))) (iI~ UT` l 1^| UT` }2(filter even? (map fib (integers-between 10 20))) sz UT`  x UT` i f2(map fib (filter even? (integers-between 10 20))) HHB{yHHlx~zz dB|~~HHB}| HHg~   ` Add up integers in list ) `  T UT`  (length (cdr lst))))) egecU< UT` )  zHHB~|m fHHl{}} dC7~HHC8 HH~H  ` Accumulation ) `   UT`  0 (yU< UT` U< lst)) U: UT` B  ` fAppend as Accumulation lU8 UT`  U6 UT` (define (append list1 list2) U4 UT` ! (accumulate cons list2 list1))  U2 UT`  HHC:HHl~  AcdC~TatopHHC l lHH`  p  ` Using our Tools: c) ` t dr t lo hi) 1) $UB UT`  ((even? lo) (* (fib lo) 9U@ UT` , (hard (+ lo 1) hi))) NU> UT` $ (else (hard (+ lo 1) hi)))) cU< UT` UR UT`   UP UT`  r (countleaves tree) -> HHCoi)HHl ng dDT h HHD UBHHC  ) 9U@ `  ha Countleaves ))) `  J `  ar'countleaves  of the empty list is 0  k   QCountleaves  of a tree is  countleaves  of the  car  of that tree @  9plus  countleaves  of the  cdr  of that tree `  countleaves  of a leaf is 1 `  UT UT`  (define countleaves tree) UR UT`  8 (cond ((null? tree) 0)   ;base case URUP UT`  st8 ((atom? tree) 1)  ;base case UTUN UT`  (l? (else (+ (countleaves (car tree))  ;tree-recursion unt*UL UT`  - (countleaves (cdr tree)))))) )?UJ UT`   HHDHHl dD5 HHD6 HH   ` veScaling a Tree y l) `   (10 (20 (30 40) 50) (60 70)) UTU@ UT` +  3 ` . (c%Scaling - As a sequence of sub-trees P `  dU> UT` / !(define (scale-tree tree factor) yU< UT` 0  (map (lambda (sub-tree) U: UT` 1  (if (atom? sub-tree) U8 UT` 3 ! (* sub-tree factor) U6 UT` 2 , (scale-tree sub-tree factor))) U4 UT` 4  tree)) U2 UT` 5 l HHD8dinHHl ullOK56$Fc ((OK56$ee sYp4!32Fc ee sYp4!32ewsew filterOK56$Fc $OK56$OK56$FcUTOK56$UFYp432Fc (lYp432 ewew map(lOK56$Fc>10OK56$SOK5]$Fc .SOK5]$s a^IXYp4H32Fc ^IXYp4H32ew^IXew  accumlatef a/HKC]8Fcasu a/HKC]8&wTP@32Fc 8UT&wTP@32O0`c[&w`c[  enumerate-~aK5$Fcr s~aK5$ U4~aK5aK5aK5FcaK5aK5aK5)aK5-Fc)aK5-K5)aK5VaK5aK5Fc saK5FaK5aK5&op32Fc ier&op32&cF&cF sequences (list)K5iKC=<)FciKC3$OK5K5L錂wKC0=v*yEkzLiKCMgKC(`FclgKC(YFK5soˈl=M5ugKC9dKJ,V 32Fc 9dKJ,V 32O0p9p leaves&wTP@ fdFcac&wTP@ fd a/HKC]8FcC a/HKC]8?KCFc@?KC`c[?KCQKC*"@32Fc s*"@326KC6KC odd?K5?KCFcK5?KCK5?KCQKC*.32Fc K5*.326KC6KC square+ 32Fc 5+ 3288 0f@+ &32Fc pf@+ &32f@8f@8 +sq?KCFcq?KC$K5q?KCqQKC?KCFcCM?KCF?KCQKCSOK5]$FcolSOK5]$ <$Fc <$9KJ < `$` & 32Fc  & 32 3 3 tree6$FcC6$&$32Fc C&$322p&2p& map326$Fc@326$6$Fc6$s&$!32Fc 2s&$!32 2p&s2p& filter6$Fc26$S]$Fc0S]$^IX&$H32Fc 2@^IX&$H322p&^IX2p&  accumlate a/]8Fc a/]8?KC/؇ > 32Fc KC/؇ > 32O0- /؇-  integers-~-$Fc~-$$~---Fc-& --)--Fc)--)-V--Fc-F--15G0;32Fc a3215G0;32O0=K<15G=K< between32/؇ > fdFc/؇ > fd a/]8Fc a/]8 Fcr F 32Fc F32 fib Fc2@ p& )> 32Fc )> 32 even?232Fc 3232 nil$Yo `32Fc Yo `32Y̲Y̲ consq Fcq q q Fc V S]$FcS]$- 32Fc a- 32-K'-K' 0Z봡 32Fc Z봡 32ZZ ncFc/c cc6Fc6661i(J$Fci$q$ *`1a]~+t};\y j<i sa- Fc F sa- ෴ ෴  even-fibsdDe F ?c `32e  sum-odd-squares̲HHD HH q ` 7 Tree Procedures ) `   ` @ ق` UB UT` A ־5; Construct a list of all the even Fibonacci numbers $U@ UT` - ; Fib(k) where k is <= n v9U> UT` (define (even-fibs n) NU< UT` B  (define (next k) cU: UT` C  (if (< k n) xU8 UT` D nil U6 UT` E sq (let ((f (fib k))) DU4 UT` F  (if (even? f) U2 UT` G & (cons f (next (+ k 1))) U0 UT` H Tr! (next (+ k 1)))))) U. UT` I 8 (next 0)) e U, UT` J ar o ` M  RHHD HHl  dD UTHHD te)HH <sum-odd-re ` P sum-odd-squares m-) ` re )J ` N > enumerates the leaves of a tree UBk ` O ; %filters them, selecting the odd ones c ` T F"squares each of the selected ones ` w 1accumulates the results using +, starting with 0 ` S  : ` even-fibs  ` D : ` U U6$enumerates the integers from 0 to n b [ ` ܪ/computes the Fibonacci number for each integer ` G| ` +filters them, selecting the even ones, and !   R (+ ` s !trees (arbitrary depth & length) T ` Y EOsequences (infinite length!!) u ` t Library of standard components EP ` u eModular, clear programs d5Leftd6Right6d7 " ReferencedDdSdV.\tNumbered. f l dy TableFootnote. f mT  TableTitleT:Table : .  f nPTitleBody. f o T  TableTitleT:Table : . f p   CellHeading. f q   Scheme. f r   CellFooting. f s  SchemeSig. +>@ t  tlHeader. @ u  Ta>Footer. f v Body. f w Scheme. f y  Scheme. f z  Scheme. 33 f { 33.l Numbered.\t.  f |a Bulleted\t. f }T Heading1ContBody. f ~  Bulleted\t. f  THeading1Body. f Body. f Equation. f CellBody. f Equation. f  HighlightNumber. f  HighlightNumber. f Body. f CellTiny. $f $. Bullet2-\ty. f CellTiny. $f $. hBullet2e-\t.  f ghm Bullet1\t.  f  Bullet1\t. f T Heading1ContBody.  Emphasis EquationVariables      SchemeFont       SchemeFont        SchemeFont            Z  Z  Z Z F Z  Z F  Thin Medium Double tThick@  Very Thin-=-.     oH p rH p rH p rH p rH p rFormat A   o- v v vFormat B   o- v v vFormat Beuem g v v v-o x- v v vHZm .bHw-ok. F U e V UComment @ afe d BlackT!WhiteeddARedbdd ThGreendd   TBlue-d Cyand Magentad  Yellow  M.Courier.BICourier-BoldOblique M.Times.B Times-Bold M.Times.P Times-RomanM.Arial Rounded MT Bold.B M.Courier.B Courier-Bold M.Arial.PArialMT M.Helvetica.BHelvetica-Bold M.Times.I Times-ItalicArial MonotypeArial Rounded Monotype Bold Courier HelveticaTimesRegularvRomanMediumBoldedBold RegularvObliqueItalic$qj)Tg32"@b0[$qh΋/`iUNja*u"ËqKx]_qbm\Dc-h:AۆOxA