$ scheme48
      > ,load ex2-diff-of-larger-two.scm
      > (diff-of-larger-two -1 -2 10)
      11
      > (diff-of-larger-two 100 3 9)
      91
      > (diff-of-larger-two -1 -2 -100)
      1
      > ,exit
      $ 
      
    
      $ scheme48
      > ,load ex3-root-of-poly.scm
      > (root-of-poly 2)
      1.0
      > (root-of-poly 0.375)
      0.5
      > (root-of-poly 1.0)
      0.7548776662466928
      > (root-of-poly -2.0)
      -1.695620769559862
      > (root-of-poly -4)
      -2.0
      > ,exit 
      $ 
      
    
      $ cat ex4-func.scm 
      ;
      ;  f(n) = 0   if n < 0
      ;       = 9   if n = 0
      ;       = 2   if n = 1
      ;       = f(n-1) + f(n-2) - n/2,   n > 1 and n is even
      ;       = f(n-1) - f(n-2) + 1      n > 1 and n is odd
      ;
      
      (define (recur n)
        ........)
      (define (iter n)
        ........)
      $ 
      $
      $ scheme48
      > ,load ex4-func.scm
      > (recur 0)
      9
      > (iter 0)
      9
      > (recur 1)
      2
      > (iter 1)
      2
      > (recur -10)
      0
      > (iter -100)
      0
      > (recur 29)
      1669
      > (iter 29)
      1669
      > (iter 100)
      89238786449
      > (recur 100)  <------- take too much time, just break 
      ^C
      interrupt: keyboard interrupt [command-level-event-handler]
                 keyboard
      1> ,exit
      $ 
      
    
      $ cat ex5-mat-exp.scm 
      ;
      ;  (mat-exp-iter a b c d n x y)
      ;    where a, b, c, and d denote a matrix M
      ;       M = (a b
      ;            c d)
      ;    and x, y denote a vectorv v
      ;       v = (x
      ;            y)
      ;  when n = 0 return y
      ;  otherwise, return y of M^n * v 
      ;
      (define (mat-exp-iter a b c d n x y)
        .....
      $ scheme48
      > ,load ex5-mat-exp.scm
      > (mat-exp-iter 1 1 1 0 0 1 0)
      0
      > (mat-exp-iter 1 1 1 0 10 1 0)
      55
      > (mat-exp-iter 1 0 0 1 15000 1 4)
      4
      > (mat-exp-iter 1 0 0 2 34 1 1)
      17179869184
      > ,exit
      $ 
      
    
        if (end? a) then 
          return init
        else 
          collect (term a) with op, and a is changed to (next a)
      
    
      $ scheme48
      > ,load ex6-accu.scm
      > 
      > (accu + 0 
          (lambda (x) x)
          1
          (lambda (x) (> x 100))
          (lambda (x) (+ x 1)))
      5050
      > 
      > (accu + 0
          (lambda (x) x)
          100
          (lambda (x) (< x 0))
          (lambda (x) (- x 2)))
      2550
      >
      > (hail 1)    ; 1, done
      0
      > (hail 2)    ; 2 --> 1
      1
      > (hail 1024) ; 1024 --> 512 .... --> 1
      10
      > (hail 11)   ; 11 --> 34 --> 17 --> 52 ...
      14
      > (hail 34)
      13
      > (hail 10)   ; 10 --> 5 --> 16 --> 8 --> 4 --> 2 --> 1
      6
      > ,exit
      $ 
      
    
      $ cat ex7-make-fib.scm
      ; (make-fib a b F G P) will return a procedure f,
      ; where f(n) = a,                  if n=0
      ;            = b,                  if n=1
      ;            = F(f(n-1), f(n-2)),  if n>1 and P(n)
      ;            = G(f(n-1), f(n-2)),  otherwise
      ;
      (define (make-fib a b F G P) ...)
      
      (define fibonacci (make-fib ...))
      $
      $ scheme48
      > ,load ex7-make-fib.scm
      >
      > (define f (make-fib 1 -1 + - even?))
      ; no values returned
      > (f 0)
      1
      > (f 1)
      -1
      > (f 2)
      0
      > (f 3)
      1
      > (f 10)
      3
      > (f 101)
      4807526976
      >
      > (fibonacci 0)
      0 
      > (fibonacci 10)
      55
      >
      > ,exit
      $
      
    
      $ 
      $ cat ex8-triple.scm 
      (define (fast-expt b n) ....)
      (define (extract-exp n b) ....) 
      
      (define (make-triple a b c)  ....)
      (define (first  x) ...)
      (define (second x) ...)
      (define (third  x) ...)
      $  
      $ scheme48
      > ,load ex8-triple.scm
      >
      > (fast-expt 2 10)
      1024
      > (extract-exp 72 2)
      3
      > (extract-exp 72 9)
      1
      > (extract-exp 72 3)
      2
      > (extract-exp 72 11)
      0
      >
      > (define x (make-triple 3 -9 0))
      ; no values returned
      > (first x)
      3
      > (second x)
      -9
      > (third x)
      0
      > ,exit
      $ 
      
    
      $ 
      $ cat ex9-select.scm 
      (define (select f . items)   ....)
      
      (define (same-parity a . items)
        (apply select ....))
      ;
      ; (apply f L), apply f with argument list L, 
      ;   for example: (apply + (list 7 9 11)) ==>  (+ 7 9 11)
      ; If `f' can accept variable number of arguments, `apply' is a must
      ; since it is impossible to invoke f like (f 1 2) and (f a b c d)
      ; simultaneously in a program. 
      ;
      $ 
      $ 
      $ scheme48
      > ,load ex9-select.scm
      > 
      > (select (lambda (n x) (even? n)) 0 1 2 3 4 5 6 7 11)
      (0 2 4 6 11)
      >
      > (select (lambda (n x) (odd? x)) 0 1 2 3 4 5 6 7 11)
      (1 3 5 7 11)
      >
      > (same-parity 1 2 3 4 5 6 7 8 9 11 13 14)
      (1 3 5 7 9 11 13)
      >
      > (same-parity 0 1 2 3 4 5 6 7 8 9 11 13 14)
      (0 2 4 6 8 14)
      >
      > ,exit
      $ 
      
    
      $
      $ cat ex10-qsort.scm
      ;
      ; the definition of filter
      ; you can copy it from textboot.
      (define (filter p L) ...)
      
      ; 
      ; the partition implemented with filter
      (define (partition a L) ...)
      
      (define (qsort L) ...)
      $  
      $
      $ scheme48 
      > ,load ex10-qsort.scm
      >                    
      > (partition 7 '(1 2 3 4 5 77 -9 10)) 
      ((1 2 3 4 5 -9) (77 10))
      >
      > (partition 7 '(7 7 7 7 7))
      (() (7 7 7 7 7))
      >
      > (partition 7 '(1 2 7 7 1 100))
      ((1 2 1) (7 7 100))
      >
      > (qsort '())
      ()
      >
      > (qsort '(34))
      (34)
      >
      > (qsort '(12 10)) 
      (10 12)
      >
      > (qsort '(1 2 3 4 5 77 -9 10))
      (-9 1 2 3 4 5 10 77)
      >
      $
      
    
      $ 
      $ cat ex11-rnd.scm 
      ;
      ; s = (a*s + b) mod m
      ;
      (define (make-rnd a b m s) ...)
      $  
      $ scheme48
      > ,load ex11-rnd.scm
      > (define r (make-rnd 7 11 119 0))
      ; no values returned
      > (r)
      11     <------  (7*0 + 11) % 119 = 11
      > (r)
      88     <------  (7*11 + 11) % 119 = 88
      > (r 1002)
      50     <------  s reset to 50 = 1002 % 119
      > (r)
      4      <------  (7*50 + 11) % 119 = 4
      > (r)
      39     <------  (7*4 + 11) % 119 = 39
      > (r)
      46     <------  (7*39 + 11) % 119 = 46
      > ,exit
      $