WXME0106 ## @wxtext wxtab wxmedia wximage  $(lib "comment-snip.ss" "framework")  +(lib "collapsed-snipclass.ss" "framework")   drscheme:sexp-snip   drscheme:syntax-snipclass%  drscheme:number  ,(lib "number-snip.ss" "drscheme" "private")   drscheme:bindings-snipclass%  drscheme:lambda-snip%  drscheme:define-snip%  java-comment-box%  java-interactions-box%  "drscheme:vertical-separator-snip%  wxbad   drscheme:xml-snip  (lib "xml-snipclass.ss" "xml")  drscheme:scheme-snip  "(lib "scheme-snipclass.ss" "xml")  test-case-box%  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  wxloc        K         ZZ                                                        	Standard  KCourier New         ZZ                                                          ?       \                              ?      ?      ?      ""   Matching Parenthesis Style   ?       \                              ?      ?      ?      ""      ?                                     ?      ?      ?      &&   (framework:syntax-coloring:scheme:symbol   ?                                     ?      ?      ?      &&   )framework:syntax-coloring:scheme:keyword   ?                                     ?      ?      ?      &&      ?                                     ?      ?      ?      t   )framework:syntax-coloring:scheme:comment   ?                                     ?      ?      ?      t      ?                                     ?      ?      ?      )&   (framework:syntax-coloring:scheme:string   ?                                     ?      ?      ?      )&   *framework:syntax-coloring:scheme:constant   ?                                     ?      ?      ?      )&      ?                                     ?      ?      ?      <$   -framework:syntax-coloring:scheme:parenthesis   ?                                     ?      ?      ?      <$      ?                                     ?      ?      ?      @   'framework:syntax-coloring:scheme:error   ?                                     ?      ?      ?      @      ?                                     ?      ?      ?            'framework:syntax-coloring:scheme:other   ?                                     ?      ?      ?               ?                                     ?      ?      ?      Qp   1drscheme:check-syntax:lexically-bound-identifier   ?                                     ?      ?      ?      Qp      ?                                     ?      ?      ?      D    *drscheme:check-syntax:imported-identifier   ?                                     ?      ?      ?      D    %profj:syntax-coloring:scheme:keyword   ?                                     ?      ?      ?               ?                                     ?      ?      ?      ""   $profj:syntax-coloring:scheme:string   ?                                     ?      ?      ?      ""   %profj:syntax-coloring:scheme:literal   ?                                     ?      ?      ?      ""   %profj:syntax-coloring:scheme:comment   ?                                     ?      ?      ?      t   #profj:syntax-coloring:scheme:error   ?                                     ?      ?      ?      @   (profj:syntax-coloring:scheme:identifier   ?                                     ?      ?      ?      &&   %profj:syntax-coloring:scheme:default   ?                                     ?      ?      ?              F ?             ?      ?      ?      ?      ?      ?            XML  F ?             ?      ?      ?      ?      ?      ?              G ?             ?      ?      ?      ?      ?      ?               ?                                    ?      ?      ?      PP     G ?                                    ?      ?      ?      PP     G ?                                     ?      ?      ?       d       KCourier New         ZZ                                                          KCourier New         
ZZ                                                         K ?                                     ?      ?      ?       d       K         ZZ                                                            ?             ?      ?      ?      ?      ?      ?              F ?       \ZZZ                              ?      ?      ?      ""      ?       \                              ?      ?      ?      (     F ?       \ZZZ                              ?      ?      ?      (   drscheme:check-syntax:keyword  F ?       \ZZZ                              ?      ?      ?      (      ?                                    ?      ?      ?      @     F ?       ZZZZ                              ?      ?      ?      @   'drscheme:check-syntax:unbound-variable  F ?       ZZZZ                              ?      ?      ?      @      ?                                     ?      ?      ?      $#     F ?       ZZZZ                              ?      ?      ?      $$   %drscheme:check-syntax:bound-variable  F ?       ZZZZ                              ?      ?      ?      $$    drscheme:check-syntax:primitive  F ?       ZZZZ                              ?      ?      ?      $$      ?                                     ?      ?      ?      3'     F ?       ZZZZ                              ?      ?      ?      3'   drscheme:check-syntax:constant  F ?       ZZZZ                              ?      ?      ?      3'      ?       \                             ?      ?      ?           drscheme:check-syntax:tail-call   ?       \                             ?      ?      ?             ?                                     ?      ?      ?      >&     F ?       ZZZZ                              ?      ?      ?      <$   drscheme:check-syntax:base  F ?       ZZZZ                              ?      ?      ?      <$     F ?       ZZZZ      ?      ?      ?      ?      ?      ?               K         ZZZZ                                                           K-adobe-courier         ZZZZ                                                          F ?       ZZZZ                              ?      ?      ?      @     F ?       ZZZZ                              ?      ?      ?      $#     F ?       ZZZZ                              ?      ?      ?      >&     G ?       ZZZZ      ?      ?      ?      ?      ?      ?              F ?       ZZZZ                             ?      ?      ?      QQ     G ?       ZZZZ                             ?      ?      ?      QQ     G ?       ZZZZ                              ?      ?      ?       d       K         
ZZZZ                                                           KCourier New         ZZZZ                                                          F ?       ZZZZ                             ?      ?      ?      PP     G ?       ZZZZ                             ?      ?      ?      PP      KCourier         ZZZZ                                                           KCourier         ZZZZ                                                          F ?       \ZZZ                                                           F ?       \ZZZ                              ?      ?      ?             F ?       ZZ^Z                              ?      ?      ?             F ?       ZZZZ                              ?      ?      ?             F ?       \ZZZ                              ?      ?      ?            K ?       ZZZZ      ?      ?      ?      ?      ?      ?               KVT100         ZZZZ                                                           K ?       ZZZZ      ?      ?      ?      ?      ?      ?              K ?       ZZZZ                              ?      ?      ?       d      F ?       ZZZZ                             ?      ?      ?              F ?       ZZZZ                              ?      ?      ?             F ?       ZZZZ                              ?      ?      ?             F ?       ZZZZ                              ?      ?      ?      **     F ?       ZZZZ                             ?      ?      ?             G ?       ZZZZ                             ?      ?      ?             F ?       ZZZZ                              ?      ?      ?              F         ZZZZ      ?      ?      ?      ?      ?      ?               F ?       ZZZZ                             ?      ?      ?            h-link-style  F ?       ZZZZ                             ?      ?      ?             F @        \ZZZ      ?      ?      ?      ?      ?      ?               F ?       \ZZZ      ?      ?      ?      ?      ?      ?            a _   F ?      ZZZZ      ?      ?      ?      ?      ?      ?            c _b  F ?       ZZZZ                              ?      ?      ?      22      F ?       ZZ]Z      ?      ?      ?      ?      ?      ?              F ?       ZZ]Z                              ?      ?      ?      @   g _` _i  K ?       ZZZZ      ?      ?      ?      ?      ?      ?            i  K ?       \ZZZ      ?      ?      ?      ?      ?      ?              K ?       ZZZZ                              ?      ?      ?      >&     K ?       ZZZZ                              ?      ?      ?      $#     F ?      ZZZZ      ?      ?      ?      ?      ?      ?              K ?       ZZZZ                              ?      ?      ?      ""    _p  F ?       ZZ]Z      ?      ?      ?      ?      ?      ?               F ?       ZZZZ      ?      ?      ?      ?      ?      ?               F ?       ZZZZ      ?      ?      ?      ?      ?      ?               F ?       ZZZZ      ?      ?      ?      ?      ?      ?                 ?             ?      ?      ?      ?      ?      ?               ?                                    ?      ?      ?      QQ     G ?                                    ?      ?      ?      QQ      ?             ?      ?      ?      ?      ?      ?               ?       ^                              ?      ?      ?              K-adobe-courier         ZZ                                                           ?                                     ?      ?      ?              F         ZZ                                                           ?       \                              ?      ?      ?             KCourier New         ZZ                                                           K         
ZZ                                                          KCourier New         
ZZ                                                          K-adobe-courier         ZZ                                                          ?                                     ?      ?      ?      **      ?                                     ?      ?      ?              ?                                    ?      ?      ?            G ?                                    ?      ?      ?             F         
ZZ                                                          ?                                     ?      ?      ?              KCourier New         
      ?      ?      ?      ?      ?      ?               K         
ZZ                                                           ?                                     ?      ?      ?      $$      KCourier New         
ZZ                                                           F         
ZZ                                                           ?                                     ?      ?      ?             ?                                     ?      ?      ?      ""      ?                                                                   ?                                                             ""  F @        \      ?      ?      ?      ?      ?      ?              F ?       \      ?      ?      ?      ?      ?      ?              F ?       \                             ?      ?      ?             F ?            ?      ?      ?      ?      ?      ?              F ?                                   ?      ?      ?             F ?       \                             ?      ?      ?      22     F ?       ]      ?      ?      ?      ?      ?      ?              F ?33@    \      ?      ?      ?      ?      ?      ?              F ?                                    ?      ?      ?             K ?                                     ?      ?      ?      <$     K ?       \                              ?      ?      ?             K ?                                    ?      ?      ?      <$     K ?       \                             ?      ?      ?              ?       \                                                           K ?       \      ?      ?      ?      ?      ?      ?              F ?                                     ?      ?      ?      ""     F ?       \                              ?      ?      ?      ""     K ?                                    ?      ?      ?             F ?       ]                              ?      ?      ?      @     F ?       ]                             ?      ?      ?              ?                                     ?      ?      ?               ?                                     ?      ?      ?               ?                                     ?      ?      ?               ?                                     ?      ?      ?            	   ?                                     ?      ?      ?               ?                                     ?      ?      ?      ""      ?                                     ?      ?      ?      ""      ?                                     ?      ?      ?      ""      ?                                     ?      ?      ?      ""   	   ?                                                                   ?                                                                   ?                                                                   ?                                                                   ?                                                                   ?                                                                <   ?                                     ?      ?      ?            -   ?                                     ?      ?      ?            3   ?                                     ?      ?      ?            <   ?                                                                -   ?                                                                3   ?                                                                   ?       \]                             ?      ?      ?            syntax-coloring:Java:keyword   ?       \]                             ?      ?      ?               ?       \]                             ?      ?      ?       d    syntax-coloring:Java:string   ?       \]                             ?      ?      ?       d    syntax-coloring:Java:literal   ?       \]                             ?      ?      ?       d       ?       \]                             ?      ?      ?      iii   syntax-coloring:Java:comment   ?       \]                             ?      ?      ?      iii      ?       \]                             ?      ?      ?      @   syntax-coloring:Java:error   ?       \]                             ?      ?      ?      @      ?       \]                             ?      ?      ?            syntax-coloring:Java:identifier   ?       \]                             ?      ?      ?              ?       \]                             ?      ?      ?         syntax-coloring:Java:default   ?       \]                             ?      ?      ?            ?                                     ?      ?      ?               ?                                                                   F         ZZ                                                          KCourier New         ZZ                                                                         /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  //  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  /  
  /  /     F  i  l  e     l  a  b  6  .  j  a  v  a  
  
  /  /   B------------------------------------------------------------------  
  /  /     i  n  t  e  r  f  a  c  e     t  o     r  e  p  r  e  s  e  n  t     a     m  e  t  h  o  d     f  r  o  m     o  b  j  e  c  t     t  o     b  o  o  l  e  a  n  
  i  n  t  e  r  f  a  c  e     IO  b  j  2  B  oo  l  {  
        b  o  o  l  e  a  n     s  e  l  e  c  t  (  O  b  j  e  c  t     o  b  j  )  ;  
  }  
  
  /  /   B------------------------------------------------------------------  
  /  /     
Functional     (  External  )     Iterator     Pattern     
  	interface     IRange     {  
  
        /  /   move     the     cursor     one     forward  ,     assuming     it     is     n  o  t     e  m  p  t  y     
        void     next  ()  ;     
        
        /  /   select     the     item     to     which     the     cursor     points  ,     a  s  s  u  m  i  n  g     i  t     i  s     n  o  t     e  m  p  t  y  
        Object     current  ()  ;     
        
        /  /   test     whether     there     are     more     items     in     the     range     
        boolean     hasMore  ()  ;     
  }  
  
  //   B------------------------------------------------------------------  
  //   c  l  a  s  s  e  s     t  o     r  e  p  r  es  e  n  t     a  n     a  r  b  i  t  r  a  r  y     l  i  s  t     o  f     o  b  j  e  c  t  s  
  a  b  st  r  a  c  t     c  l  a  s  s     A  L  o  O  b  j  {     }  
  
  c  l  a  s  s     M  T  L  o  O  b  j     e  x  t  e  n  d  s     A  L  o  O  b  j  {  
        M  T  L  oO  b  j  ()     {}  
  }  
  
  c  l  a  s  s     C  on  s  L  o  O  b  j     e  x  t  e  n  d  s     A  L  o  O  b  j  {  
        O  b  j  e  c  t     f  i  r  s  t  ;  
        AL  o  O  b  j     re  s  t  ;  
  
        C  o  n  s  L  o  O  b  j  (  O  b  j  e  c  t     f  i  r  s  t  ,     A  L  o  O  b  j     r  e  s  t  ){  
              t  h  i  s  .  f  ir  s  t     =     f  i  r  s  t  ;  
              t  h  i  s  .  r  es  t     =     r  e  s  t  ;  
        }  
  }  
  
  /  /   B------------------------------------------------------------------  
  /  /     
Functional     (  External  )     Iterator     Pattern  :  
  /  	/          iterator     for     a     list     of     o  b  j  e  c  t  s   
  
  class     	ListRange     
implements     IRange     {  
  
        /  /  9 --------------------------------------------------------     
        /  /   Member     data  
        A  L  o  O  b  j     ptr  ;     /* reference to this list */  
        
        /  :/--------------------------------------------------------   
        /  /   Constructor  
        	ListRange  (  A  Lo  O  b  j     aList  )     {     this  .  ptr     =     aList  ;     }  
            
        /  9/--------------------------------------------------------  
        /  /   Methods     to     	implement     the     IRange     	interface  
        void     next  ()     {  
            this  .  ptr     =     ((  Cons  L  o  O  b  j  )this  .  ptr  )  .  rest  ;     
        }  
  
        Object     current  ()     {  
            return     ((  ConsLo  Obj  )this  .  ptr  )  .  first  ;     
        }  
        
        boolean     hasMore  ()     {  
            return     (this  .  ptr     
instanceof     ConsL  o  O  b  j  )  ;     
        }  
  }  
  
  /  /   B------------------------------------------------------------------  
  /  /     ob  j  e  c  t  s     t  o     k  e  e  p     i  n     t  h  e     l  i  s  t  
  c  l  a  s  s     B  o  o  k     {  
        S  t  r  i  n  g     t  i  t  l  e  ;  
      S  t  r  i  n  g     a  u  t  h  o  r  ;  
        i  n  t     p  r  i  c  e  ;  
  
      B  o  o  k  (  S  t  r  i  n  g     t  i  t  l  e  ,     S  t  r  i  n  g     a  u  t  h  o  r  ,     i  n  t     p  r  i  c  e  )     {  
            t  h  i  s  .  t  i  t  l  e     =     t  i  t  l  e  ;  
              t  h  i  s  .  a  u  t  h  o  r     =     a  u  t  h  o  r  ;  
            t  h  i  s  .  p  r  i  c  e     =     p  r  i  c  e  ;  
        }  
  
  }  
  
  
  /  /   B------------------------------------------------------------------  
  /  /     t  h  e     c  l  i  e  n  t     c  l  a  s  s     t  h  a  t     u  s  e  s     t  h  e     l  i  s  t     o  f     o  b  j  e  c  t  s  ,     t  h  e     i  t  e  r  a  t  o  r  ,     a  n  d     t  h  e     I  O  b  j  2  B  o  o  l     i  n  t  e  r  f  a  c  e  
  c  l  a  s  s     T  e  s  t  C  l  a  s  s  {  
  
        T  e  s  t  C  l  a  s  s  (){}  
  
        /  /     e  x  t  e  r  n  a  l  l  y     defin  ed     r  e  c  u  r  s  i  v  e     f  i  l  t  e  r        
        ALo  O  b  j     f  i  l  t  e  r  (  I  Ra  n  g  e     i  t  ,     I  O  b  j  2  B  o  o  l     i  o2  b  ){  
  
        /  /     n  o  t     e  m  p  t  y  ?  
            i  f     (  i  t  .  h  a  s  M  o  r  e  ()){  
              /  /     r  e  m  e  m  b  e  r     l  o  c  a  l     v  a  l  u  e     a  n  d     a  d  v  a  n  c  e     t  h  e     i  t  e  r  a  t  o  r  
              O  b  j  e  c  t     o  b  j     =     i  t  .  c  u  r  r  e  n  t  ()  ;  
              i  t  .  n  e  xt  ()  ;  
  
              /  /     s  e  l  e  c  t     t  h  i  s     i  t  e  m  ?  ,     a  d  d     i  t     a  n  d     g  o     o  n  
                  i  f     (  i  o2  b  .  s  e  l  e  c  t  (  o  b  j  ))  
                    r  e  t  u  r  n     n  e  w     C  o  n  s  L  o  O  b  j  (  o  b  j  ,     f  i  l  t  e  r  (  i  t  ,     i  o2  b  ))  ;  
  
                    //     n  o  t     s  e  l  e  c  t  e  d  ,     g  o     o  n  
                    els  e  
                          r  e  t  u  r  n     filter  (  i  t  ,     io2  b  )  ;  
              }  
              //   e  m  p  t  y     c  l  a  u  s  e  
              els  e  
                    r  e  t  u  r  n     n  e  w     M  T  L  o  O  b  j  ()  ;  
        }  
  
        /  /     e  x  t  e  r  n  a  l     i  t  e  r  a  t  i  v  e     f  i  l  t  e  r  
        A  L  o  O  b  j     i  t  e  r  F  i  l  t  e  r  (  I  R  a  n  g  e     i  t  ,     I  O  b  j  2  B  o  o  l     i  o2  b  ){  
              
              /  /     e  m  p  t  y     c  l  a  u  s  e  
              A  L  o  O  b  j     r  e  s  u  l  t     =     n  e  w     M  T  L  o  O  b  j  ()  ;  
  
              /  /     t  r  a  v  e  r  s  e   t  h  e     l  i  s  t  
              f  o  r     (  I  R  a  n  g  e     r     =     i  t  ;     r  .  h  a  s  M  o  r  e  ()  ;     r  .  n  e  x  t  ()){  
                    i  f     (  i  o2  b  .  s  e  l  e  c  t  (  r  .  c  u  r  r  e  n  t  ()))  
                          r  e  s  u  l  t     =     n  e  w     C  o  n  s  L  o  O  b  j  (  r  .  c  u  r  r  e  n  t  ()  ,     r  e  s  u  l  t  )  ;  
              }  
  
              /  /     r  e  t  u  r  n     t  h  e     r  e  s  u  l  t     -     n  o  t  e     t  h  a  t   i  t     i  s     i  n     r  e  v  e  r  s  e     o  r  d  e  r  
              r  e  t  u  r  n     r  e  s  u  l  t  ;  
        }  
  
  }  
  
  /  /     b  o  o  k     s  e  l  e  c  t  o  r     b  y     p  r  i  c  e  :     c  h  e  a  p  e  r     t  h  a  n     g  i  v  e  n     p  r  i  c  e  
  cla  s  s     B  o  o  k  C  h  e  a  p  e  rT  h  an     i  m  p  l  e  m  e  n  t  s     I  O  b  j  2  B  o  o  l  {  
        i  nt     p  r  i  c  e  ;  
  
        B  o  o  k  C  he  a  p  e  rT  h  a  n  (i  n  t     p  r  i  c  e  ){  
              t  h  i  s  .  pr  i  c  e     =     p  r  i  c  e  ;  
        }        
  
        /  /     s  e  l  e  c  t   Bo  o  k     o  b  j  e  c  t     w  i  t  h     c  h  e  a  p  e  r     p  r  i  c  e     t  h  a  t     t  h  i  s  .  p  r  i  c  e  
      b  o  o  l  e  a  n     s  elec  t  (  O  b  j  e  c  t     o  b  j  ){  
            re  t  u  r  n     (((  Bo  o  k  )  o  b  j  )  .  p  r  i  c  e  )     <     t  h  i  s  .  p  r  i  c  e  ;  
        }  
  }  
  
   3            Bo  ok     b1     =     n  e  w     Bo  o  k  (  "  1  "  ,     "  2  "  ,     3  4  )  ;  
  
  B  o  o  k     b  2     =     n  e  w     B  o  o  k  (  "  3"  ,     "  4  "  ,     3  2  )  ;  
  
  Book b3   = new   Book  (  "HtDP"  ,   "mf"  ,   60  )  ;  
  
  ALoObj     mt     =     new     MTLoObj  ()  ;  
  
  A  L  o  O  b  j     l  i  s  t  1     =     n  e  w     C  o  n  s  L  o  O  b  j  (  b  1  ,     mt  )  ;  
  
  A  L  o  O  b  j     l  i  s  t2     =     n  e  w     C  o  n  s  L  o  O  b  j  (  b2  ,   new   	ConsLoObj  (  b3  ,     list1  ))  ;  
  
  TestClass test   = new   	TestClass  ()  ;  
  
  test  .  filter  (new     	ListRange  (  list2  )  ,     new     BookCheaperThan  (  35  ))  ;  
  
  test  .  filter  (new     	ListRange  (  list1  )  ,     new     BookCheaperThan  (  30  ))  ;  
  
  test  .  
iterFilter  (new     	ListRange  (  list2  )  ,     new     BookCheaperThan  (  35  ))  ;  
  
  test  .  iterF  ilter  (new     	ListRange  (  list1  )  ,     new     BookCheaperThan  (  30  ))  ;  
  
          
  
   u     	Standard   ?             ?      ?      ?      ?      ?      ?                ?             ?      ?      ?      ?      ?      ?                 filter test              test  .  filter  (  new     	ListRange  (  list2  )  ,     new     BookCheaperThan  (  35  ))  	;             $ n  ew     Co  n  s  L  o  O  b  j  (  b  2  ,     n  ew     C  o  n  s  L  o  O  b  j  (  b  1  ,     m  t  ))       
        	Standard   ?             ?      ?      ?      ?      ?      ?                ?             ?      ?      ?      ?      ?      ?                 filter test              test  .  filter  (  new     	ListRange  (  list1  )  ,     new     BookCheaperThan  (  30  ))  	;              m  t       
  
  
        	Standard   ?             ?      ?      ?      ?      ?      ?                ?             ?      ?      ?      ?      ?      ?               F         ZZ                                                            filter test              test  .  i  t  e  r  F  ilter  (  new     	ListRange  (  list2  )  ,     new     BookCheaperThan  (  35  ))  	;             $ n  ew     Co  n  s  L  o  O  b  j  (  b  1  ,     n  ew     C  o  n  s  L  o  O  b  j  (  b  2  ,     m  t  ))       
        	Standard   ?             ?      ?      ?      ?      ?      ?                ?             ?      ?      ?      ?      ?      ?               F         ZZ                                                            filter test              test  .  i  t  e  r  F  ilter  (  new     	ListRange  (  list1  )  ,     new     BookCheaperThan  (  30  ))  	;              m  t       
     
