Hex Artifact Content
Not logged in

Artifact 0cd33d7fa66ec5ed16a817210d992125f835cd7a:


0000: 3b 20 54 65 73 74 20 73 75 69 74 65 20 66 6f 72  ; Test suite for
0010: 20 53 52 46 49 20 34 33 0a 3b 0a 3b 20 24 49 64   SRFI 43.;.; $Id
0020: 3a 20 73 72 66 69 2d 34 33 2d 74 65 73 74 2e 73  : srfi-43-test.s
0030: 70 73 20 36 31 35 32 20 32 30 30 39 2d 30 33 2d  ps 6152 2009-03-
0040: 31 39 20 32 32 3a 33 30 3a 30 35 5a 20 77 69 6c  19 22:30:05Z wil
0050: 6c 20 24 0a 0a 28 69 6d 70 6f 72 74 20 28 65 78  l $..(import (ex
0060: 63 65 70 74 20 28 72 6e 72 73 20 62 61 73 65 29  cept (rnrs base)
0070: 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
0080: 20 20 76 65 63 74 6f 72 2d 66 69 6c 6c 21 0a 20    vector-fill!. 
0090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
00a0: 65 63 74 6f 72 2d 3e 6c 69 73 74 0a 20 20 20 20  ector->list.    
00b0: 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 73 74              list
00c0: 2d 3e 76 65 63 74 6f 72 0a 20 20 20 20 20 20 20  ->vector.       
00d0: 20 20 20 20 20 20 20 20 20 76 65 63 74 6f 72 2d           vector-
00e0: 6d 61 70 0a 20 20 20 20 20 20 20 20 20 20 20 20  map.            
00f0: 20 20 20 20 76 65 63 74 6f 72 2d 66 6f 72 2d 65      vector-for-e
0100: 61 63 68 29 0a 20 20 20 20 20 20 20 20 28 72 6e  ach).        (rn
0110: 72 73 20 6c 69 73 74 73 29 0a 20 20 20 20 20 20  rs lists).      
0120: 20 20 28 72 6e 72 73 20 69 6f 20 73 69 6d 70 6c    (rnrs io simpl
0130: 65 29 0a 20 20 20 20 20 20 20 20 28 73 75 72 66  e).        (surf
0140: 61 67 65 20 73 36 20 62 61 73 69 63 2d 73 74 72  age s6 basic-str
0150: 69 6e 67 2d 70 6f 72 74 73 29 0a 20 20 20 20 20  ing-ports).     
0160: 20 20 20 28 73 75 72 66 61 67 65 20 73 34 33 20     (surfage s43 
0170: 76 65 63 74 6f 72 73 29 29 0a 0a 28 64 65 66 69  vectors))..(defi
0180: 6e 65 20 28 77 72 69 74 65 6c 6e 20 2e 20 78 73  ne (writeln . xs
0190: 29 0a 20 20 28 66 6f 72 2d 65 61 63 68 20 64 69  ).  (for-each di
01a0: 73 70 6c 61 79 20 78 73 29 0a 20 20 28 6e 65 77  splay xs).  (new
01b0: 6c 69 6e 65 29 29 0a 0a 28 64 65 66 69 6e 65 20  line))..(define 
01c0: 28 66 61 69 6c 20 74 6f 6b 65 6e 20 2e 20 6d 6f  (fail token . mo
01d0: 72 65 29 0a 20 20 28 77 72 69 74 65 6c 6e 20 22  re).  (writeln "
01e0: 45 72 72 6f 72 3a 20 74 65 73 74 20 66 61 69 6c  Error: test fail
01f0: 65 64 3a 20 22 20 74 6f 6b 65 6e 29 0a 20 20 23  ed: " token).  #
0200: 66 29 0a 0a 28 6f 72 20 28 76 65 63 74 6f 72 3f  f)..(or (vector?
0210: 20 28 6d 61 6b 65 2d 76 65 63 74 6f 72 20 30 29   (make-vector 0)
0220: 29 0a 20 20 20 20 28 66 61 69 6c 20 27 6d 61 6b  ).    (fail 'mak
0230: 65 2d 76 65 63 74 6f 72 3a 30 29 29 0a 0a 28 6f  e-vector:0))..(o
0240: 72 20 28 3d 20 31 30 20 28 76 65 63 74 6f 72 2d  r (= 10 (vector-
0250: 6c 65 6e 67 74 68 20 28 6d 61 6b 65 2d 76 65 63  length (make-vec
0260: 74 6f 72 20 31 30 29 29 29 0a 20 20 20 20 28 66  tor 10))).    (f
0270: 61 69 6c 20 27 76 65 63 74 6f 72 2d 6c 65 6e 67  ail 'vector-leng
0280: 74 68 3a 62 61 73 69 63 29 29 0a 0a 28 6f 72 20  th:basic))..(or 
0290: 28 3d 20 39 37 20 28 76 65 63 74 6f 72 2d 72 65  (= 97 (vector-re
02a0: 66 20 28 6d 61 6b 65 2d 76 65 63 74 6f 72 20 35  f (make-vector 5
02b0: 30 30 20 39 37 29 20 34 39 39 29 29 0a 20 20 20  00 97) 499)).   
02c0: 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72 2d 72   (fail 'vector-r
02d0: 65 66 3a 62 61 73 69 63 29 29 0a 0a 28 6f 72 20  ef:basic))..(or 
02e0: 28 65 71 75 61 6c 3f 20 28 76 65 63 74 6f 72 29  (equal? (vector)
02f0: 20 27 23 28 29 29 0a 20 20 20 20 28 66 61 69 6c   '#()).    (fail
0300: 20 27 76 65 63 74 6f 72 3a 30 29 29 0a 0a 28 6f   'vector:0))..(o
0310: 72 20 28 65 71 75 61 6c 3f 20 28 76 65 63 74 6f  r (equal? (vecto
0320: 72 20 27 61 20 27 62 20 39 37 29 20 27 23 28 61  r 'a 'b 97) '#(a
0330: 20 62 20 39 37 29 29 0a 20 20 20 20 28 66 61 69   b 97)).    (fai
0340: 6c 20 27 76 65 63 74 6f 72 29 29 0a 0a 28 6f 72  l 'vector))..(or
0350: 20 28 65 71 75 61 6c 3f 20 28 76 65 63 74 6f 72   (equal? (vector
0360: 2d 75 6e 66 6f 6c 64 20 28 6c 61 6d 62 64 61 20  -unfold (lambda 
0370: 28 69 20 78 29 20 28 76 61 6c 75 65 73 20 78 20  (i x) (values x 
0380: 28 2d 20 78 20 31 29 29 29 0a 20 20 20 20 20 20  (- x 1))).      
0390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
03a0: 20 20 20 20 20 31 30 20 30 29 0a 20 20 20 20 20       10 0).     
03b0: 20 20 20 20 20 20 20 27 23 28 30 20 2d 31 20 2d         '#(0 -1 -
03c0: 32 20 2d 33 20 2d 34 20 2d 35 20 2d 36 20 2d 37  2 -3 -4 -5 -6 -7
03d0: 20 2d 38 20 2d 39 29 29 20 3b 20 62 75 74 20 53   -8 -9)) ; but S
03e0: 52 46 49 20 34 33 20 73 61 79 73 20 2d 38 20 2d  RFI 43 says -8 -
03f0: 38 20 61 74 20 65 6e 64 0a 20 20 20 20 28 66 61  8 at end.    (fa
0400: 69 6c 20 27 76 65 63 74 6f 72 2d 75 6e 66 6f 6c  il 'vector-unfol
0410: 64 3a 31 29 29 0a 0a 28 6f 72 20 28 65 71 75 61  d:1))..(or (equa
0420: 6c 3f 20 28 76 65 63 74 6f 72 2d 75 6e 66 6f 6c  l? (vector-unfol
0430: 64 20 76 61 6c 75 65 73 20 31 30 29 20 27 23 28  d values 10) '#(
0440: 30 20 31 20 32 20 33 20 34 20 35 20 36 20 37 20  0 1 2 3 4 5 6 7 
0450: 38 20 39 29 29 0a 20 20 20 20 28 66 61 69 6c 20  8 9)).    (fail 
0460: 27 76 65 63 74 6f 72 2d 75 6e 66 6f 6c 64 3a 32  'vector-unfold:2
0470: 29 29 0a 0a 28 6f 72 20 28 6c 65 74 20 28 28 76  ))..(or (let ((v
0480: 65 63 74 6f 72 20 27 23 28 61 20 62 20 39 37 29  ector '#(a b 97)
0490: 29 29 0a 20 20 20 20 20 20 28 65 71 75 61 6c 3f  )).      (equal?
04a0: 20 28 76 65 63 74 6f 72 2d 75 6e 66 6f 6c 64 20   (vector-unfold 
04b0: 28 6c 61 6d 62 64 61 20 28 69 29 20 28 76 65 63  (lambda (i) (vec
04c0: 74 6f 72 2d 72 65 66 20 76 65 63 74 6f 72 20 69  tor-ref vector i
04d0: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
04e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
04f0: 28 76 65 63 74 6f 72 2d 6c 65 6e 67 74 68 20 76  (vector-length v
0500: 65 63 74 6f 72 29 29 0a 20 20 20 20 20 20 20 20  ector)).        
0510: 20 20 20 20 20 20 76 65 63 74 6f 72 29 29 0a 20        vector)). 
0520: 20 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72     (fail 'vector
0530: 2d 75 6e 66 6f 6c 64 3a 33 29 29 0a 0a 28 6f 72  -unfold:3))..(or
0540: 20 28 65 71 75 61 6c 3f 20 28 76 65 63 74 6f 72   (equal? (vector
0550: 2d 75 6e 66 6f 6c 64 2d 72 69 67 68 74 20 28 6c  -unfold-right (l
0560: 61 6d 62 64 61 20 28 69 20 78 29 20 28 76 61 6c  ambda (i x) (val
0570: 75 65 73 20 78 20 28 2b 20 78 20 31 29 29 29 20  ues x (+ x 1))) 
0580: 38 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20  8 0).           
0590: 20 27 23 28 37 20 36 20 35 20 34 20 33 20 32 20   '#(7 6 5 4 3 2 
05a0: 31 20 30 29 29 0a 20 20 20 20 28 66 61 69 6c 20  1 0)).    (fail 
05b0: 27 76 65 63 74 6f 72 2d 75 6e 66 6f 6c 64 2d 72  'vector-unfold-r
05c0: 69 67 68 74 3a 31 29 29 0a 0a 28 6f 72 20 28 6c  ight:1))..(or (l
05d0: 65 74 20 28 28 76 65 63 74 6f 72 20 27 23 28 33  et ((vector '#(3
05e0: 20 31 20 34 20 35 20 39 29 29 29 0a 20 20 20 20   1 4 5 9))).    
05f0: 20 20 28 65 71 75 61 6c 3f 20 28 76 65 63 74 6f    (equal? (vecto
0600: 72 2d 75 6e 66 6f 6c 64 2d 72 69 67 68 74 20 28  r-unfold-right (
0610: 6c 61 6d 62 64 61 20 28 69 20 78 29 0a 20 20 20  lambda (i x).   
0620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0640: 20 20 28 76 61 6c 75 65 73 20 28 76 65 63 74 6f    (values (vecto
0650: 72 2d 72 65 66 20 76 65 63 74 6f 72 20 78 29 20  r-ref vector x) 
0660: 28 2b 20 78 20 31 29 29 29 0a 20 20 20 20 20 20  (+ x 1))).      
0670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0680: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 65               (ve
0690: 63 74 6f 72 2d 6c 65 6e 67 74 68 20 76 65 63 74  ctor-length vect
06a0: 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  or).            
06b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
06c0: 20 20 20 20 20 20 20 30 29 0a 20 20 20 20 20 20         0).      
06d0: 20 20 20 20 20 20 20 20 27 23 28 39 20 35 20 34          '#(9 5 4
06e0: 20 31 20 33 29 29 29 0a 20 20 20 20 28 66 61 69   1 3))).    (fai
06f0: 6c 20 27 76 65 63 74 6f 72 2d 75 6e 66 6f 6c 64  l 'vector-unfold
0700: 2d 72 69 67 68 74 3a 32 29 29 0a 0a 28 6f 72 20  -right:2))..(or 
0710: 28 65 71 75 61 6c 3f 20 28 76 65 63 74 6f 72 2d  (equal? (vector-
0720: 63 6f 70 79 20 27 23 28 61 20 62 20 63 20 64 20  copy '#(a b c d 
0730: 65 20 66 20 67 20 68 20 69 29 29 0a 20 20 20 20  e f g h i)).    
0740: 20 20 20 20 20 20 20 20 27 23 28 61 20 62 20 63          '#(a b c
0750: 20 64 20 65 20 66 20 67 20 68 20 69 29 29 0a 20   d e f g h i)). 
0760: 20 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72     (fail 'vector
0770: 2d 63 6f 70 79 3a 31 29 29 0a 0a 28 6f 72 20 28  -copy:1))..(or (
0780: 65 71 75 61 6c 3f 20 28 76 65 63 74 6f 72 2d 63  equal? (vector-c
0790: 6f 70 79 20 27 23 28 61 20 62 20 63 20 64 20 65  opy '#(a b c d e
07a0: 20 66 20 67 20 68 20 69 29 20 36 29 0a 20 20 20   f g h i) 6).   
07b0: 20 20 20 20 20 20 20 20 20 27 23 28 67 20 68 20           '#(g h 
07c0: 69 29 29 0a 20 20 20 20 28 66 61 69 6c 20 27 76  i)).    (fail 'v
07d0: 65 63 74 6f 72 2d 63 6f 70 79 3a 32 29 29 0a 0a  ector-copy:2))..
07e0: 28 6f 72 20 28 65 71 75 61 6c 3f 20 28 76 65 63  (or (equal? (vec
07f0: 74 6f 72 2d 63 6f 70 79 20 27 23 28 61 20 62 20  tor-copy '#(a b 
0800: 63 20 64 20 65 20 66 20 67 20 68 20 69 29 20 33  c d e f g h i) 3
0810: 20 36 29 0a 20 20 20 20 20 20 20 20 20 20 20 20   6).            
0820: 27 23 28 64 20 65 20 66 29 29 0a 20 20 20 20 28  '#(d e f)).    (
0830: 66 61 69 6c 20 27 76 65 63 74 6f 72 2d 63 6f 70  fail 'vector-cop
0840: 79 3a 33 29 29 0a 0a 28 6f 72 20 28 65 71 75 61  y:3))..(or (equa
0850: 6c 3f 20 28 76 65 63 74 6f 72 2d 63 6f 70 79 20  l? (vector-copy 
0860: 27 23 28 61 20 62 20 63 20 64 20 65 20 66 20 67  '#(a b c d e f g
0870: 20 68 20 69 29 20 36 20 31 32 20 27 78 29 0a 20   h i) 6 12 'x). 
0880: 20 20 20 20 20 20 20 20 20 20 20 27 23 28 67 20             '#(g 
0890: 68 20 69 20 78 20 78 20 78 29 29 0a 20 20 20 20  h i x x x)).    
08a0: 28 66 61 69 6c 20 27 76 65 63 74 6f 72 2d 63 6f  (fail 'vector-co
08b0: 70 79 3a 34 29 29 0a 0a 28 6f 72 20 28 65 71 75  py:4))..(or (equ
08c0: 61 6c 3f 20 28 76 65 63 74 6f 72 2d 72 65 76 65  al? (vector-reve
08d0: 72 73 65 2d 63 6f 70 79 20 27 23 28 35 20 34 20  rse-copy '#(5 4 
08e0: 33 20 32 20 31 20 30 29 20 31 20 35 29 0a 20 20  3 2 1 0) 1 5).  
08f0: 20 20 20 20 20 20 20 20 20 20 27 23 28 31 20 32            '#(1 2
0900: 20 33 20 34 29 29 0a 20 20 20 20 28 66 61 69 6c   3 4)).    (fail
0910: 20 27 76 65 63 74 6f 72 2d 72 65 76 65 72 73 65   'vector-reverse
0920: 2d 63 6f 70 79 29 29 0a 0a 28 6f 72 20 28 65 71  -copy))..(or (eq
0930: 75 61 6c 3f 20 28 76 65 63 74 6f 72 2d 61 70 70  ual? (vector-app
0940: 65 6e 64 20 27 23 28 78 29 20 27 23 28 79 29 29  end '#(x) '#(y))
0950: 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 23 28  .            '#(
0960: 78 20 79 29 29 0a 20 20 20 20 28 66 61 69 6c 20  x y)).    (fail 
0970: 27 76 65 63 74 6f 72 2d 61 70 70 65 6e 64 3a 31  'vector-append:1
0980: 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20  ))..(or (equal? 
0990: 28 76 65 63 74 6f 72 2d 61 70 70 65 6e 64 20 27  (vector-append '
09a0: 23 28 61 29 20 27 23 28 62 20 63 20 64 29 29 0a  #(a) '#(b c d)).
09b0: 20 20 20 20 20 20 20 20 20 20 20 20 27 23 28 61              '#(a
09c0: 20 62 20 63 20 64 29 29 0a 20 20 20 20 28 66 61   b c d)).    (fa
09d0: 69 6c 20 27 76 65 63 74 6f 72 2d 61 70 70 65 6e  il 'vector-appen
09e0: 64 3a 32 29 29 0a 0a 28 6f 72 20 28 65 71 75 61  d:2))..(or (equa
09f0: 6c 3f 20 28 76 65 63 74 6f 72 2d 61 70 70 65 6e  l? (vector-appen
0a00: 64 20 27 23 28 61 20 23 28 62 29 29 20 27 23 28  d '#(a #(b)) '#(
0a10: 23 28 63 29 29 29 0a 20 20 20 20 20 20 20 20 20  #(c))).         
0a20: 20 20 20 27 23 28 61 20 23 28 62 29 20 23 28 63     '#(a #(b) #(c
0a30: 29 29 29 0a 20 20 20 20 28 66 61 69 6c 20 27 76  ))).    (fail 'v
0a40: 65 63 74 6f 72 2d 61 70 70 65 6e 64 3a 33 29 29  ector-append:3))
0a50: 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20 28 76  ..(or (equal? (v
0a60: 65 63 74 6f 72 2d 63 6f 6e 63 61 74 65 6e 61 74  ector-concatenat
0a70: 65 20 27 28 23 28 61 20 62 29 20 23 28 63 20 64  e '(#(a b) #(c d
0a80: 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))).            
0a90: 27 23 28 61 20 62 20 63 20 64 29 29 0a 20 20 20  '#(a b c d)).   
0aa0: 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72 2d 63   (fail 'vector-c
0ab0: 6f 6e 63 61 74 65 6e 61 74 65 29 29 0a 0a 28 6f  oncatenate))..(o
0ac0: 72 20 28 61 6e 64 20 28 65 71 3f 20 28 76 65 63  r (and (eq? (vec
0ad0: 74 6f 72 3f 20 27 23 28 61 20 62 20 63 29 29 20  tor? '#(a b c)) 
0ae0: 23 74 29 0a 20 20 20 20 20 20 20 20 20 28 65 71  #t).         (eq
0af0: 3f 20 28 76 65 63 74 6f 72 3f 20 27 28 61 20 62  ? (vector? '(a b
0b00: 20 63 29 29 20 23 66 29 0a 20 20 20 20 20 20 20   c)) #f).       
0b10: 20 20 28 65 71 3f 20 28 76 65 63 74 6f 72 3f 20    (eq? (vector? 
0b20: 23 74 29 20 23 66 29 0a 20 20 20 20 20 20 20 20  #t) #f).        
0b30: 20 28 65 71 3f 20 28 76 65 63 74 6f 72 3f 20 27   (eq? (vector? '
0b40: 23 28 29 29 20 23 74 29 0a 20 20 20 20 20 20 20  #()) #t).       
0b50: 20 20 28 65 71 3f 20 28 76 65 63 74 6f 72 3f 20    (eq? (vector? 
0b60: 27 28 29 29 20 23 66 29 29 0a 20 20 20 20 28 66  '()) #f)).    (f
0b70: 61 69 6c 20 27 76 65 63 74 6f 72 3f 29 29 0a 0a  ail 'vector?))..
0b80: 28 6f 72 20 28 61 6e 64 20 28 65 71 3f 20 28 76  (or (and (eq? (v
0b90: 65 63 74 6f 72 2d 65 6d 70 74 79 3f 20 27 23 28  ector-empty? '#(
0ba0: 61 29 29 20 23 66 29 0a 20 20 20 20 20 20 20 20  a)) #f).        
0bb0: 20 28 65 71 3f 20 28 76 65 63 74 6f 72 2d 65 6d   (eq? (vector-em
0bc0: 70 74 79 3f 20 27 23 28 28 29 29 29 20 23 66 29  pty? '#(())) #f)
0bd0: 0a 20 20 20 20 20 20 20 20 20 28 65 71 3f 20 28  .         (eq? (
0be0: 76 65 63 74 6f 72 2d 65 6d 70 74 79 3f 20 27 23  vector-empty? '#
0bf0: 28 23 28 29 29 29 20 23 66 29 0a 20 20 20 20 20  (#())) #f).     
0c00: 20 20 20 20 28 65 71 3f 20 28 76 65 63 74 6f 72      (eq? (vector
0c10: 2d 65 6d 70 74 79 3f 20 27 23 28 29 29 20 23 74  -empty? '#()) #t
0c20: 29 29 0a 20 20 20 20 28 66 61 69 6c 20 27 76 65  )).    (fail 've
0c30: 63 74 6f 72 2d 65 6d 70 74 79 3f 29 29 0a 0a 28  ctor-empty?))..(
0c40: 6f 72 20 28 61 6e 64 20 28 65 71 3f 20 28 76 65  or (and (eq? (ve
0c50: 63 74 6f 72 3d 20 65 71 3f 20 27 23 28 61 20 62  ctor= eq? '#(a b
0c60: 20 63 20 64 29 20 27 23 28 61 20 62 20 63 20 64   c d) '#(a b c d
0c70: 29 29 20 23 74 29 0a 20 20 20 20 20 20 20 20 20  )) #t).         
0c80: 28 65 71 3f 20 28 76 65 63 74 6f 72 3d 20 65 71  (eq? (vector= eq
0c90: 3f 20 27 23 28 61 20 62 20 63 20 64 29 20 27 23  ? '#(a b c d) '#
0ca0: 28 61 20 62 20 64 20 63 29 29 20 23 66 29 0a 20  (a b d c)) #f). 
0cb0: 20 20 20 20 20 20 20 20 28 65 71 3f 20 28 76 65          (eq? (ve
0cc0: 63 74 6f 72 3d 20 3d 20 27 23 28 31 20 32 20 33  ctor= = '#(1 2 3
0cd0: 20 34 20 35 29 20 27 23 28 31 20 32 20 33 20 34   4 5) '#(1 2 3 4
0ce0: 29 29 20 23 66 29 0a 20 20 20 20 20 20 20 20 20  )) #f).         
0cf0: 28 65 71 3f 20 28 76 65 63 74 6f 72 3d 20 3d 20  (eq? (vector= = 
0d00: 27 23 28 31 20 32 20 33 20 34 29 20 27 23 28 31  '#(1 2 3 4) '#(1
0d10: 20 32 20 33 20 34 29 29 20 20 20 23 74 29 0a 20   2 3 4))   #t). 
0d20: 20 20 20 20 20 20 20 20 28 65 71 3f 20 28 76 65          (eq? (ve
0d30: 63 74 6f 72 3d 20 65 71 3f 29 20 23 74 29 0a 20  ctor= eq?) #t). 
0d40: 20 20 20 20 20 20 20 20 28 65 71 3f 20 28 76 65          (eq? (ve
0d50: 63 74 6f 72 3d 20 65 71 3f 20 27 23 28 61 29 29  ctor= eq? '#(a))
0d60: 20 23 74 29 0a 20 20 20 20 20 20 20 20 20 28 65   #t).         (e
0d70: 71 3f 20 28 76 65 63 74 6f 72 3d 20 65 71 3f 20  q? (vector= eq? 
0d80: 28 76 65 63 74 6f 72 20 28 76 65 63 74 6f 72 20  (vector (vector 
0d90: 27 61 29 29 20 28 76 65 63 74 6f 72 20 28 76 65  'a)) (vector (ve
0da0: 63 74 6f 72 20 27 61 29 29 29 20 23 66 29 0a 20  ctor 'a))) #f). 
0db0: 20 20 20 20 20 20 20 20 28 65 71 3f 20 28 76 65          (eq? (ve
0dc0: 63 74 6f 72 3d 20 65 71 75 61 6c 3f 20 28 76 65  ctor= equal? (ve
0dd0: 63 74 6f 72 20 28 76 65 63 74 6f 72 20 27 61 29  ctor (vector 'a)
0de0: 29 20 28 76 65 63 74 6f 72 20 28 76 65 63 74 6f  ) (vector (vecto
0df0: 72 20 27 61 29 29 29 20 23 74 29 29 0a 20 20 20  r 'a))) #t)).   
0e00: 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72 3d 29   (fail 'vector=)
0e10: 29 0a 0a 28 6f 72 20 28 65 71 3f 20 28 76 65 63  )..(or (eq? (vec
0e20: 74 6f 72 2d 72 65 66 20 27 23 28 61 20 62 20 63  tor-ref '#(a b c
0e30: 20 64 29 20 32 29 20 27 63 29 0a 20 20 20 20 28   d) 2) 'c).    (
0e40: 66 61 69 6c 20 27 76 65 63 74 6f 72 2d 72 65 66  fail 'vector-ref
0e50: 29 29 0a 0a 28 6f 72 20 28 65 71 3f 20 28 76 65  ))..(or (eq? (ve
0e60: 63 74 6f 72 2d 6c 65 6e 67 74 68 20 27 23 28 61  ctor-length '#(a
0e70: 20 62 20 63 29 29 20 33 29 0a 20 20 20 20 28 66   b c)) 3).    (f
0e80: 61 69 6c 20 27 76 65 63 74 6f 72 2d 6c 65 6e 67  ail 'vector-leng
0e90: 74 68 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c  th))..(or (equal
0ea0: 3f 20 28 76 65 63 74 6f 72 2d 66 6f 6c 64 20 28  ? (vector-fold (
0eb0: 6c 61 6d 62 64 61 20 28 69 6e 64 65 78 20 6c 65  lambda (index le
0ec0: 6e 20 73 74 72 29 20 28 6d 61 78 20 28 73 74 72  n str) (max (str
0ed0: 69 6e 67 2d 6c 65 6e 67 74 68 20 73 74 72 29 20  ing-length str) 
0ee0: 6c 65 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20  len)).          
0ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30                 0
0f00: 20 27 23 28 22 61 22 20 22 62 22 20 22 22 20 22   '#("a" "b" "" "
0f10: 64 64 22 20 22 65 22 29 29 0a 20 20 20 20 20 20  dd" "e")).      
0f20: 20 20 20 20 20 20 32 29 0a 20 20 20 20 28 66 61        2).    (fa
0f30: 69 6c 20 27 76 65 63 74 6f 72 2d 66 6f 6c 64 3a  il 'vector-fold:
0f40: 31 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f  1))..(or (equal?
0f50: 20 28 76 65 63 74 6f 72 2d 66 6f 6c 64 20 28 6c   (vector-fold (l
0f60: 61 6d 62 64 61 20 28 69 6e 64 65 78 20 74 61 69  ambda (index tai
0f70: 6c 20 65 6c 74 29 20 28 63 6f 6e 73 20 65 6c 74  l elt) (cons elt
0f80: 20 74 61 69 6c 29 29 0a 20 20 20 20 20 20 20 20   tail)).        
0f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0fa0: 20 27 28 29 20 27 23 28 30 20 31 20 32 20 33 20   '() '#(0 1 2 3 
0fb0: 34 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  4)).            
0fc0: 27 28 34 20 33 20 32 20 31 20 30 29 29 0a 20 20  '(4 3 2 1 0)).  
0fd0: 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72 2d    (fail 'vector-
0fe0: 66 6f 6c 64 3a 32 29 29 0a 0a 28 6f 72 20 28 65  fold:2))..(or (e
0ff0: 71 75 61 6c 3f 20 28 76 65 63 74 6f 72 2d 66 6f  qual? (vector-fo
1000: 6c 64 20 28 6c 61 6d 62 64 61 20 28 69 6e 64 65  ld (lambda (inde
1010: 78 20 63 6f 75 6e 74 65 72 20 6e 29 0a 20 20 20  x counter n).   
1020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1030: 20 20 20 20 20 20 20 20 28 69 66 20 28 65 76 65          (if (eve
1040: 6e 3f 20 6e 29 20 28 2b 20 63 6f 75 6e 74 65 72  n? n) (+ counter
1050: 20 31 29 20 63 6f 75 6e 74 65 72 29 29 0a 20 20   1) counter)).  
1060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1070: 20 20 20 20 20 20 20 30 20 27 23 28 30 20 31 20         0 '#(0 1 
1080: 32 20 33 20 34 20 34 20 34 20 35 20 36 20 37 29  2 3 4 4 4 5 6 7)
1090: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 36 29  ).            6)
10a0: 0a 20 20 20 20 28 66 61 69 6c 20 27 76 65 63 74  .    (fail 'vect
10b0: 6f 72 2d 66 6f 6c 64 3a 33 29 29 0a 0a 28 6f 72  or-fold:3))..(or
10c0: 20 28 65 71 75 61 6c 3f 20 28 76 65 63 74 6f 72   (equal? (vector
10d0: 2d 66 6f 6c 64 2d 72 69 67 68 74 20 28 6c 61 6d  -fold-right (lam
10e0: 62 64 61 20 28 69 6e 64 65 78 20 74 61 69 6c 20  bda (index tail 
10f0: 65 6c 74 29 20 28 63 6f 6e 73 20 65 6c 74 20 74  elt) (cons elt t
1100: 61 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20  ail)).          
1110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1120: 20 20 20 20 20 27 28 29 20 27 23 28 61 20 62 20       '() '#(a b 
1130: 63 20 64 29 29 0a 20 20 20 20 20 20 20 20 20 20  c d)).          
1140: 20 20 27 28 61 20 62 20 63 20 64 29 29 0a 20 20    '(a b c d)).  
1150: 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72 2d    (fail 'vector-
1160: 66 6f 6c 64 2d 72 69 67 68 74 29 29 0a 0a 0a 28  fold-right))...(
1170: 6f 72 20 28 65 71 75 61 6c 3f 20 28 76 65 63 74  or (equal? (vect
1180: 6f 72 2d 6d 61 70 20 28 6c 61 6d 62 64 61 20 28  or-map (lambda (
1190: 69 20 78 29 20 28 2a 20 78 20 78 29 29 0a 20 20  i x) (* x x)).  
11a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b0: 20 20 20 20 20 20 28 76 65 63 74 6f 72 2d 75 6e        (vector-un
11c0: 66 6f 6c 64 20 28 6c 61 6d 62 64 61 20 28 69 20  fold (lambda (i 
11d0: 78 29 20 28 76 61 6c 75 65 73 20 78 20 28 2b 20  x) (values x (+ 
11e0: 78 20 31 29 29 29 20 34 20 31 29 29 0a 20 20 20  x 1))) 4 1)).   
11f0: 20 20 20 20 20 20 20 20 20 27 23 28 31 20 34 20           '#(1 4 
1200: 39 20 31 36 29 29 0a 20 20 20 20 28 66 61 69 6c  9 16)).    (fail
1210: 20 27 76 65 63 74 6f 72 2d 6d 61 70 3a 31 29 29   'vector-map:1))
1220: 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20 28 76  ..(or (equal? (v
1230: 65 63 74 6f 72 2d 6d 61 70 20 28 6c 61 6d 62 64  ector-map (lambd
1240: 61 20 28 69 20 78 20 79 29 20 28 2a 20 78 20 79  a (i x y) (* x y
1250: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
1260: 20 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74             (vect
1270: 6f 72 2d 75 6e 66 6f 6c 64 20 28 6c 61 6d 62 64  or-unfold (lambd
1280: 61 20 28 69 20 78 29 20 28 76 61 6c 75 65 73 20  a (i x) (values 
1290: 78 20 28 2b 20 78 20 31 29 29 29 20 35 20 31 29  x (+ x 1))) 5 1)
12a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12b0: 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f 72           (vector
12c0: 2d 75 6e 66 6f 6c 64 20 28 6c 61 6d 62 64 61 20  -unfold (lambda 
12d0: 28 69 20 78 29 20 28 76 61 6c 75 65 73 20 78 20  (i x) (values x 
12e0: 28 2d 20 78 20 31 29 29 29 20 35 20 35 29 29 0a  (- x 1))) 5 5)).
12f0: 20 20 20 20 20 20 20 20 20 20 20 20 27 23 28 35              '#(5
1300: 20 38 20 39 20 38 20 35 29 29 0a 20 20 20 20 28   8 9 8 5)).    (
1310: 66 61 69 6c 20 27 76 65 63 74 6f 72 2d 6d 61 70  fail 'vector-map
1320: 3a 32 29 29 0a 0a 28 6f 72 20 28 6d 65 6d 62 65  :2))..(or (membe
1330: 72 20 28 6c 65 74 20 28 28 63 6f 75 6e 74 20 30  r (let ((count 0
1340: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
1350: 20 28 76 65 63 74 6f 72 2d 6d 61 70 20 28 6c 61   (vector-map (la
1360: 6d 62 64 61 20 28 69 67 6e 6f 72 65 64 2d 69 6e  mbda (ignored-in
1370: 64 65 78 20 69 67 6e 6f 72 65 64 2d 65 6c 74 29  dex ignored-elt)
1380: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1390: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65               (se
13a0: 74 21 20 63 6f 75 6e 74 20 28 2b 20 63 6f 75 6e  t! count (+ coun
13b0: 74 20 31 29 29 0a 20 20 20 20 20 20 20 20 20 20  t 1)).          
13c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d0: 20 20 63 6f 75 6e 74 29 0a 20 20 20 20 20 20 20    count).       
13e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f0: 20 20 20 27 23 28 61 20 62 29 29 29 0a 20 20 20     '#(a b))).   
1400: 20 20 20 20 20 20 20 20 20 27 28 23 28 31 20 32           '(#(1 2
1410: 29 20 23 28 32 20 31 29 29 29 0a 20 20 20 20 28  ) #(2 1))).    (
1420: 66 61 69 6c 20 27 76 65 63 74 6f 72 2d 6d 61 70  fail 'vector-map
1430: 3a 33 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c  :3))..(or (equal
1440: 3f 20 28 6c 65 74 20 28 28 76 20 28 76 65 63 74  ? (let ((v (vect
1450: 6f 72 20 31 20 32 20 33 20 34 29 29 29 0a 20 20  or 1 2 3 4))).  
1460: 20 20 20 20 20 20 20 20 20 20 20 20 28 76 65 63              (vec
1470: 74 6f 72 2d 6d 61 70 21 20 28 6c 61 6d 62 64 61  tor-map! (lambda
1480: 20 28 69 20 65 6c 74 29 20 28 2b 20 69 20 65 6c   (i elt) (+ i el
1490: 74 29 29 20 76 29 0a 20 20 20 20 20 20 20 20 20  t)) v).         
14a0: 20 20 20 20 20 76 29 0a 20 20 20 20 20 20 20 20       v).        
14b0: 20 20 20 20 27 23 28 31 20 33 20 35 20 37 29 29      '#(1 3 5 7))
14c0: 0a 20 20 20 20 28 66 61 69 6c 20 27 76 65 63 74  .    (fail 'vect
14d0: 6f 72 2d 6d 61 70 21 29 29 0a 0a 28 6f 72 20 28  or-map!))..(or (
14e0: 65 71 75 61 6c 3f 20 28 6c 65 74 20 28 28 70 20  equal? (let ((p 
14f0: 28 6f 70 65 6e 2d 6f 75 74 70 75 74 2d 73 74 72  (open-output-str
1500: 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20  ing))).         
1510: 20 20 20 20 20 28 76 65 63 74 6f 72 2d 66 6f 72       (vector-for
1520: 2d 65 61 63 68 20 28 6c 61 6d 62 64 61 20 28 69  -each (lambda (i
1530: 20 78 29 20 28 64 69 73 70 6c 61 79 20 78 20 70   x) (display x p
1540: 29 20 28 6e 65 77 6c 69 6e 65 20 70 29 29 0a 20  ) (newline p)). 
1550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 23                '#
1570: 28 22 66 6f 6f 22 20 22 62 61 72 22 20 22 62 61  ("foo" "bar" "ba
1580: 7a 22 20 22 71 75 75 78 22 20 22 7a 6f 74 22 29  z" "quux" "zot")
1590: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
15a0: 28 67 65 74 2d 6f 75 74 70 75 74 2d 73 74 72 69  (get-output-stri
15b0: 6e 67 20 70 29 29 0a 20 20 20 20 20 20 20 20 20  ng p)).         
15c0: 20 20 20 22 66 6f 6f 5c 6e 62 61 72 5c 6e 62 61     "foo\nbar\nba
15d0: 7a 5c 6e 71 75 75 78 5c 6e 7a 6f 74 5c 6e 22 29  z\nquux\nzot\n")
15e0: 0a 20 20 20 20 28 66 61 69 6c 20 27 76 65 63 74  .    (fail 'vect
15f0: 6f 72 2d 66 6f 72 2d 65 61 63 68 29 29 0a 0a 28  or-for-each))..(
1600: 6f 72 20 28 65 71 75 61 6c 3f 20 28 76 65 63 74  or (equal? (vect
1610: 6f 72 2d 63 6f 75 6e 74 20 28 6c 61 6d 62 64 61  or-count (lambda
1620: 20 28 69 20 65 6c 74 29 20 28 65 76 65 6e 3f 20   (i elt) (even? 
1630: 65 6c 74 29 29 20 27 23 28 33 20 31 20 34 20 31  elt)) '#(3 1 4 1
1640: 20 35 20 39 20 32 20 35 20 36 29 29 0a 20 20 20   5 9 2 5 6)).   
1650: 20 20 20 20 20 20 20 20 20 33 29 0a 20 20 20 20           3).    
1660: 28 66 61 69 6c 20 27 76 65 63 74 6f 72 2d 63 6f  (fail 'vector-co
1670: 75 6e 74 3a 31 29 29 0a 0a 28 6f 72 20 28 65 71  unt:1))..(or (eq
1680: 75 61 6c 3f 20 28 76 65 63 74 6f 72 2d 63 6f 75  ual? (vector-cou
1690: 6e 74 20 28 6c 61 6d 62 64 61 20 28 69 20 78 20  nt (lambda (i x 
16a0: 79 29 20 28 3c 20 78 20 79 29 29 0a 20 20 20 20  y) (< x y)).    
16b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16c0: 20 20 20 20 20 20 27 23 28 31 20 33 20 36 20 39        '#(1 3 6 9
16d0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
16e0: 20 20 20 20 20 20 20 20 20 20 20 20 27 23 28 32              '#(2
16f0: 20 34 20 36 20 38 20 31 30 20 31 32 29 29 0a 20   4 6 8 10 12)). 
1700: 20 20 20 20 20 20 20 20 20 20 20 32 29 0a 20 20             2).  
1710: 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72 2d    (fail 'vector-
1720: 63 6f 75 6e 74 3a 32 29 29 0a 0a 28 6f 72 20 28  count:2))..(or (
1730: 65 71 75 61 6c 3f 20 28 76 65 63 74 6f 72 2d 69  equal? (vector-i
1740: 6e 64 65 78 20 65 76 65 6e 3f 20 27 23 28 33 20  ndex even? '#(3 
1750: 31 20 34 20 31 20 35 20 39 29 29 0a 20 20 20 20  1 4 1 5 9)).    
1760: 20 20 20 20 20 20 20 20 32 29 0a 20 20 20 20 28          2).    (
1770: 66 61 69 6c 20 27 76 65 63 74 6f 72 2d 69 6e 64  fail 'vector-ind
1780: 65 78 3a 31 29 29 0a 0a 28 6f 72 20 28 65 71 75  ex:1))..(or (equ
1790: 61 6c 3f 20 28 76 65 63 74 6f 72 2d 69 6e 64 65  al? (vector-inde
17a0: 78 20 3c 20 27 23 28 33 20 31 20 34 20 31 20 35  x < '#(3 1 4 1 5
17b0: 20 39 20 32 20 35 20 36 29 20 27 23 28 32 20 37   9 2 5 6) '#(2 7
17c0: 20 31 20 38 20 32 29 29 0a 20 20 20 20 20 20 20   1 8 2)).       
17d0: 20 20 20 20 20 31 29 0a 20 20 20 20 28 66 61 69       1).    (fai
17e0: 6c 20 27 76 65 63 74 6f 72 2d 69 6e 64 65 78 3a  l 'vector-index:
17f0: 32 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f  2))..(or (equal?
1800: 20 28 76 65 63 74 6f 72 2d 69 6e 64 65 78 20 3d   (vector-index =
1810: 20 27 23 28 33 20 31 20 34 20 31 20 35 20 39 20   '#(3 1 4 1 5 9 
1820: 32 20 35 20 36 29 20 27 23 28 32 20 37 20 31 20  2 5 6) '#(2 7 1 
1830: 38 20 32 29 29 0a 20 20 20 20 20 20 20 20 20 20  8 2)).          
1840: 20 20 23 66 29 0a 20 20 20 20 28 66 61 69 6c 20    #f).    (fail 
1850: 27 76 65 63 74 6f 72 2d 69 6e 64 65 78 3a 33 29  'vector-index:3)
1860: 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20 28  )..(or (equal? (
1870: 76 65 63 74 6f 72 2d 69 6e 64 65 78 2d 72 69 67  vector-index-rig
1880: 68 74 20 65 76 65 6e 3f 20 27 23 28 33 20 31 20  ht even? '#(3 1 
1890: 34 20 31 20 35 20 39 29 29 0a 20 20 20 20 20 20  4 1 5 9)).      
18a0: 20 20 20 20 20 20 32 29 0a 20 20 20 20 28 66 61        2).    (fa
18b0: 69 6c 20 27 76 65 63 74 6f 72 2d 69 6e 64 65 78  il 'vector-index
18c0: 2d 72 69 67 68 74 3a 31 29 29 0a 0a 28 6f 72 20  -right:1))..(or 
18d0: 28 65 71 75 61 6c 3f 20 28 76 65 63 74 6f 72 2d  (equal? (vector-
18e0: 69 6e 64 65 78 2d 72 69 67 68 74 20 3c 20 27 23  index-right < '#
18f0: 28 33 20 31 20 34 20 31 20 35 29 20 27 23 28 32  (3 1 4 1 5) '#(2
1900: 20 37 20 31 20 38 20 32 29 29 0a 20 20 20 20 20   7 1 8 2)).     
1910: 20 20 20 20 20 20 20 33 29 0a 20 20 20 20 28 66         3).    (f
1920: 61 69 6c 20 27 76 65 63 74 6f 72 2d 69 6e 64 65  ail 'vector-inde
1930: 78 2d 72 69 67 68 74 3a 32 29 29 0a 0a 28 6f 72  x-right:2))..(or
1940: 20 28 65 71 75 61 6c 3f 20 28 76 65 63 74 6f 72   (equal? (vector
1950: 2d 69 6e 64 65 78 2d 72 69 67 68 74 20 3d 20 27  -index-right = '
1960: 23 28 33 20 31 20 34 20 31 20 35 29 20 27 23 28  #(3 1 4 1 5) '#(
1970: 32 20 37 20 31 20 38 20 32 29 29 0a 20 20 20 20  2 7 1 8 2)).    
1980: 20 20 20 20 20 20 20 20 23 66 29 0a 20 20 20 20          #f).    
1990: 28 66 61 69 6c 20 27 76 65 63 74 6f 72 2d 69 6e  (fail 'vector-in
19a0: 64 65 78 2d 72 69 67 68 74 3a 33 29 29 0a 0a 28  dex-right:3))..(
19b0: 6f 72 20 28 65 71 75 61 6c 3f 20 28 76 65 63 74  or (equal? (vect
19c0: 6f 72 2d 73 6b 69 70 20 65 76 65 6e 3f 20 27 23  or-skip even? '#
19d0: 28 33 20 31 20 34 20 31 20 35 20 39 29 29 0a 20  (3 1 4 1 5 9)). 
19e0: 20 20 20 20 20 20 20 20 20 20 20 30 29 0a 20 20             0).  
19f0: 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72 2d    (fail 'vector-
1a00: 73 6b 69 70 3a 31 29 29 0a 0a 28 6f 72 20 28 65  skip:1))..(or (e
1a10: 71 75 61 6c 3f 20 28 76 65 63 74 6f 72 2d 73 6b  qual? (vector-sk
1a20: 69 70 20 3c 20 27 23 28 33 20 31 20 34 20 31 20  ip < '#(3 1 4 1 
1a30: 35 20 39 20 32 20 35 20 36 29 20 27 23 28 32 20  5 9 2 5 6) '#(2 
1a40: 37 20 31 20 38 20 32 29 29 0a 20 20 20 20 20 20  7 1 8 2)).      
1a50: 20 20 20 20 20 20 30 29 0a 20 20 20 20 28 66 61        0).    (fa
1a60: 69 6c 20 27 76 65 63 74 6f 72 2d 73 6b 69 70 3a  il 'vector-skip:
1a70: 32 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f  2))..(or (equal?
1a80: 20 28 76 65 63 74 6f 72 2d 73 6b 69 70 20 3d 20   (vector-skip = 
1a90: 27 23 28 33 20 31 20 34 20 31 20 35 20 39 20 32  '#(3 1 4 1 5 9 2
1aa0: 20 35 20 36 29 20 27 23 28 32 20 37 20 31 20 38   5 6) '#(2 7 1 8
1ab0: 20 32 29 29 0a 20 20 20 20 20 20 20 20 20 20 20   2)).           
1ac0: 20 30 29 0a 20 20 20 20 28 66 61 69 6c 20 27 76   0).    (fail 'v
1ad0: 65 63 74 6f 72 2d 73 6b 69 70 3a 33 29 29 0a 0a  ector-skip:3))..
1ae0: 28 6f 72 20 28 65 71 75 61 6c 3f 20 28 76 65 63  (or (equal? (vec
1af0: 74 6f 72 2d 73 6b 69 70 20 3e 20 27 23 28 33 20  tor-skip > '#(3 
1b00: 31 20 34 20 31 20 35 20 39 20 32 20 35 20 36 29  1 4 1 5 9 2 5 6)
1b10: 20 27 23 28 32 20 37 20 31 20 38 20 32 29 29 0a   '#(2 7 1 8 2)).
1b20: 20 20 20 20 20 20 20 20 20 20 20 20 31 29 0a 20              1). 
1b30: 20 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72     (fail 'vector
1b40: 2d 73 6b 69 70 3a 34 29 29 0a 0a 28 6f 72 20 28  -skip:4))..(or (
1b50: 65 71 75 61 6c 3f 20 28 76 65 63 74 6f 72 2d 73  equal? (vector-s
1b60: 6b 69 70 2d 72 69 67 68 74 20 65 76 65 6e 3f 20  kip-right even? 
1b70: 27 23 28 33 20 31 20 34 20 31 20 35 20 39 29 29  '#(3 1 4 1 5 9))
1b80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 35 29 0a  .            5).
1b90: 20 20 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f      (fail 'vecto
1ba0: 72 2d 73 6b 69 70 2d 72 69 67 68 74 3a 31 29 29  r-skip-right:1))
1bb0: 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20 28 76  ..(or (equal? (v
1bc0: 65 63 74 6f 72 2d 73 6b 69 70 2d 72 69 67 68 74  ector-skip-right
1bd0: 20 3c 20 27 23 28 33 20 31 20 34 20 31 20 35 29   < '#(3 1 4 1 5)
1be0: 20 27 23 28 32 20 37 20 31 20 38 20 32 29 29 0a   '#(2 7 1 8 2)).
1bf0: 20 20 20 20 20 20 20 20 20 20 20 20 34 29 0a 20              4). 
1c00: 20 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72     (fail 'vector
1c10: 2d 73 6b 69 70 2d 72 69 67 68 74 3a 32 29 29 0a  -skip-right:2)).
1c20: 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20 28 76 65  .(or (equal? (ve
1c30: 63 74 6f 72 2d 73 6b 69 70 2d 72 69 67 68 74 20  ctor-skip-right 
1c40: 3d 20 27 23 28 33 20 31 20 34 20 31 20 35 29 20  = '#(3 1 4 1 5) 
1c50: 27 23 28 32 20 37 20 31 20 38 20 32 29 29 0a 20  '#(2 7 1 8 2)). 
1c60: 20 20 20 20 20 20 20 20 20 20 20 34 29 0a 20 20             4).  
1c70: 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72 2d    (fail 'vector-
1c80: 73 6b 69 70 2d 72 69 67 68 74 3a 33 29 29 0a 0a  skip-right:3))..
1c90: 28 6f 72 20 28 65 71 75 61 6c 3f 20 28 76 65 63  (or (equal? (vec
1ca0: 74 6f 72 2d 73 6b 69 70 2d 72 69 67 68 74 20 3e  tor-skip-right >
1cb0: 20 27 23 28 33 20 31 20 34 20 31 20 35 29 20 27   '#(3 1 4 1 5) '
1cc0: 23 28 32 20 37 20 31 20 38 20 32 29 29 0a 20 20  #(2 7 1 8 2)).  
1cd0: 20 20 20 20 20 20 20 20 20 20 33 29 0a 20 20 20            3).   
1ce0: 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72 2d 73   (fail 'vector-s
1cf0: 6b 69 70 2d 72 69 67 68 74 3a 34 29 29 0a 0a 28  kip-right:4))..(
1d00: 64 65 66 69 6e 65 20 28 73 74 72 69 6e 67 2d 63  define (string-c
1d10: 6f 6d 70 61 72 61 74 6f 72 20 73 31 20 73 32 29  omparator s1 s2)
1d20: 0a 20 20 28 63 6f 6e 64 20 28 28 3c 20 28 73 74  .  (cond ((< (st
1d30: 72 69 6e 67 2d 6c 65 6e 67 74 68 20 73 31 29 20  ring-length s1) 
1d40: 28 73 74 72 69 6e 67 2d 6c 65 6e 67 74 68 20 73  (string-length s
1d50: 32 29 29 0a 20 20 20 20 20 20 20 20 20 2d 31 29  2)).         -1)
1d60: 0a 20 20 20 20 20 20 20 20 28 28 3e 20 28 73 74  .        ((> (st
1d70: 72 69 6e 67 2d 6c 65 6e 67 74 68 20 73 31 29 20  ring-length s1) 
1d80: 28 73 74 72 69 6e 67 2d 6c 65 6e 67 74 68 20 73  (string-length s
1d90: 32 29 29 0a 20 20 20 20 20 20 20 20 20 2b 31 29  2)).         +1)
1da0: 0a 20 20 20 20 20 20 20 20 28 28 73 74 72 69 6e  .        ((strin
1db0: 67 3c 3f 20 73 31 20 73 32 29 0a 20 20 20 20 20  g<? s1 s2).     
1dc0: 20 20 20 20 2d 31 29 0a 20 20 20 20 20 20 20 20      -1).        
1dd0: 28 28 73 74 72 69 6e 67 3e 3f 20 73 31 20 73 32  ((string>? s1 s2
1de0: 29 0a 20 20 20 20 20 20 20 20 20 2b 31 29 0a 20  ).         +1). 
1df0: 20 20 20 20 20 20 20 28 65 6c 73 65 0a 20 20 20         (else.   
1e00: 20 20 20 20 20 20 30 29 29 29 0a 0a 28 6f 72 20        0)))..(or 
1e10: 28 65 71 75 61 6c 3f 20 28 76 65 63 74 6f 72 2d  (equal? (vector-
1e20: 62 69 6e 61 72 79 2d 73 65 61 72 63 68 20 27 23  binary-search '#
1e30: 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ().             
1e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e50: 20 20 20 20 20 22 62 61 64 22 0a 20 20 20 20 20       "bad".     
1e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
1e80: 69 6e 67 2d 63 6f 6d 70 61 72 61 74 6f 72 29 0a  ing-comparator).
1e90: 20 20 20 20 20 20 20 20 20 20 20 20 23 66 29 0a              #f).
1ea0: 20 20 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f      (fail 'vecto
1eb0: 72 2d 62 69 6e 61 72 79 2d 73 65 61 72 63 68 3a  r-binary-search:
1ec0: 30 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f  0))..(or (equal?
1ed0: 20 28 76 65 63 74 6f 72 2d 62 69 6e 61 72 79 2d   (vector-binary-
1ee0: 73 65 61 72 63 68 20 27 23 28 22 61 62 22 20 22  search '#("ab" "
1ef0: 63 64 22 20 22 65 66 22 20 22 62 63 64 22 20 22  cd" "ef" "bcd" "
1f00: 63 64 65 22 20 22 61 61 61 61 22 29 0a 20 20 20  cde" "aaaa").   
1f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1f30: 62 61 64 22 0a 20 20 20 20 20 20 20 20 20 20 20  bad".           
1f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f50: 20 20 20 20 20 20 20 73 74 72 69 6e 67 2d 63 6f         string-co
1f60: 6d 70 61 72 61 74 6f 72 29 0a 20 20 20 20 20 20  mparator).      
1f70: 20 20 20 20 20 20 23 66 29 0a 20 20 20 20 28 66        #f).    (f
1f80: 61 69 6c 20 27 76 65 63 74 6f 72 2d 62 69 6e 61  ail 'vector-bina
1f90: 72 79 2d 73 65 61 72 63 68 3a 31 29 29 0a 0a 28  ry-search:1))..(
1fa0: 6f 72 20 28 65 71 75 61 6c 3f 20 28 76 65 63 74  or (equal? (vect
1fb0: 6f 72 2d 62 69 6e 61 72 79 2d 73 65 61 72 63 68  or-binary-search
1fc0: 20 27 23 28 22 61 62 22 20 22 63 64 22 20 22 65   '#("ab" "cd" "e
1fd0: 66 22 20 22 62 63 64 22 20 22 63 64 65 22 20 22  f" "bcd" "cde" "
1fe0: 61 61 61 61 22 29 0a 20 20 20 20 20 20 20 20 20  aaaa").         
1ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2000: 20 20 20 20 20 20 20 20 20 22 22 0a 20 20 20 20           "".    
2010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
2030: 72 69 6e 67 2d 63 6f 6d 70 61 72 61 74 6f 72 29  ring-comparator)
2040: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 66 29  .            #f)
2050: 0a 20 20 20 20 28 66 61 69 6c 20 27 76 65 63 74  .    (fail 'vect
2060: 6f 72 2d 62 69 6e 61 72 79 2d 73 65 61 72 63 68  or-binary-search
2070: 3a 32 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c  :2))..(or (equal
2080: 3f 20 28 76 65 63 74 6f 72 2d 62 69 6e 61 72 79  ? (vector-binary
2090: 2d 73 65 61 72 63 68 20 27 23 28 22 61 62 22 20  -search '#("ab" 
20a0: 22 63 64 22 20 22 65 66 22 20 22 62 63 64 22 20  "cd" "ef" "bcd" 
20b0: 22 63 64 65 22 20 22 61 61 61 61 22 29 0a 20 20  "cde" "aaaa").  
20c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e0: 22 68 65 6c 6c 6f 22 0a 20 20 20 20 20 20 20 20  "hello".        
20f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2100: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
2110: 2d 63 6f 6d 70 61 72 61 74 6f 72 29 0a 20 20 20  -comparator).   
2120: 20 20 20 20 20 20 20 20 20 23 66 29 0a 20 20 20           #f).   
2130: 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72 2d 62   (fail 'vector-b
2140: 69 6e 61 72 79 2d 73 65 61 72 63 68 3a 33 29 29  inary-search:3))
2150: 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20 28 76  ..(or (equal? (v
2160: 65 63 74 6f 72 2d 62 69 6e 61 72 79 2d 73 65 61  ector-binary-sea
2170: 72 63 68 20 27 23 28 22 61 62 22 20 22 63 64 22  rch '#("ab" "cd"
2180: 20 22 65 66 22 20 22 62 63 64 22 20 22 63 64 65   "ef" "bcd" "cde
2190: 22 20 22 61 61 61 61 22 29 0a 20 20 20 20 20 20  " "aaaa").      
21a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b0: 20 20 20 20 20 20 20 20 20 20 20 20 22 61 62 22              "ab"
21c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e0: 20 20 20 73 74 72 69 6e 67 2d 63 6f 6d 70 61 72     string-compar
21f0: 61 74 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20  ator).          
2200: 20 20 30 29 0a 20 20 20 20 28 66 61 69 6c 20 27    0).    (fail '
2210: 76 65 63 74 6f 72 2d 62 69 6e 61 72 79 2d 73 65  vector-binary-se
2220: 61 72 63 68 3a 34 29 29 0a 0a 28 6f 72 20 28 65  arch:4))..(or (e
2230: 71 75 61 6c 3f 20 28 76 65 63 74 6f 72 2d 62 69  qual? (vector-bi
2240: 6e 61 72 79 2d 73 65 61 72 63 68 20 27 23 28 22  nary-search '#("
2250: 61 62 22 20 22 63 64 22 20 22 65 66 22 20 22 62  ab" "cd" "ef" "b
2260: 63 64 22 20 22 63 64 65 22 20 22 61 61 61 61 22  cd" "cde" "aaaa"
2270: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
2280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2290: 20 20 20 20 22 61 61 61 61 22 0a 20 20 20 20 20      "aaaa".     
22a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
22c0: 69 6e 67 2d 63 6f 6d 70 61 72 61 74 6f 72 29 0a  ing-comparator).
22d0: 20 20 20 20 20 20 20 20 20 20 20 20 35 29 0a 20              5). 
22e0: 20 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72     (fail 'vector
22f0: 2d 62 69 6e 61 72 79 2d 73 65 61 72 63 68 3a 35  -binary-search:5
2300: 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20  ))..(or (equal? 
2310: 28 76 65 63 74 6f 72 2d 62 69 6e 61 72 79 2d 73  (vector-binary-s
2320: 65 61 72 63 68 20 27 23 28 22 61 62 22 20 22 63  earch '#("ab" "c
2330: 64 22 20 22 65 66 22 20 22 62 63 64 22 20 22 63  d" "ef" "bcd" "c
2340: 64 65 22 20 22 61 61 61 61 22 29 0a 20 20 20 20  de" "aaaa").    
2350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 62                "b
2370: 63 64 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  cd".            
2380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2390: 20 20 20 20 20 20 73 74 72 69 6e 67 2d 63 6f 6d        string-com
23a0: 70 61 72 61 74 6f 72 29 0a 20 20 20 20 20 20 20  parator).       
23b0: 20 20 20 20 20 33 29 0a 20 20 20 20 28 66 61 69       3).    (fai
23c0: 6c 20 27 76 65 63 74 6f 72 2d 62 69 6e 61 72 79  l 'vector-binary
23d0: 2d 73 65 61 72 63 68 3a 36 29 29 0a 0a 28 6f 72  -search:6))..(or
23e0: 20 28 65 71 75 61 6c 3f 20 28 76 65 63 74 6f 72   (equal? (vector
23f0: 2d 61 6e 79 20 6c 69 73 74 20 27 23 28 29 20 27  -any list '#() '
2400: 23 28 61 20 62 20 63 29 29 0a 20 20 20 20 20 20  #(a b c)).      
2410: 20 20 20 20 20 20 23 66 29 0a 20 20 20 20 28 66        #f).    (f
2420: 61 69 6c 20 27 76 65 63 74 6f 72 2d 61 6e 79 3a  ail 'vector-any:
2430: 30 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f  0))..(or (equal?
2440: 20 28 76 65 63 74 6f 72 2d 61 6e 79 20 6c 69 73   (vector-any lis
2450: 74 20 27 23 28 61 20 62 20 63 29 20 27 23 28 29  t '#(a b c) '#()
2460: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 66  ).            #f
2470: 29 0a 20 20 20 20 28 66 61 69 6c 20 27 76 65 63  ).    (fail 'vec
2480: 74 6f 72 2d 61 6e 79 3a 31 29 29 0a 0a 28 6f 72  tor-any:1))..(or
2490: 20 28 65 71 75 61 6c 3f 20 28 76 65 63 74 6f 72   (equal? (vector
24a0: 2d 61 6e 79 20 6c 69 73 74 20 27 23 28 61 20 62  -any list '#(a b
24b0: 20 63 29 20 27 23 28 64 29 29 0a 20 20 20 20 20   c) '#(d)).     
24c0: 20 20 20 20 20 20 20 27 28 61 20 64 29 29 0a 20         '(a d)). 
24d0: 20 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72     (fail 'vector
24e0: 2d 61 6e 79 3a 32 29 29 0a 0a 28 6f 72 20 28 65  -any:2))..(or (e
24f0: 71 75 61 6c 3f 20 28 76 65 63 74 6f 72 2d 61 6e  qual? (vector-an
2500: 79 20 6d 65 6d 71 20 27 23 28 61 20 62 20 63 29  y memq '#(a b c)
2510: 20 27 23 28 28 29 20 28 63 20 64 20 65 29 20 28   '#(() (c d e) (
2520: 62 20 63 20 39 37 29 29 29 0a 20 20 20 20 20 20  b c 97))).      
2530: 20 20 20 20 20 20 27 28 63 20 39 37 29 29 0a 20        '(c 97)). 
2540: 20 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72     (fail 'vector
2550: 2d 61 6e 79 3a 33 29 29 0a 0a 28 6f 72 20 28 65  -any:3))..(or (e
2560: 71 75 61 6c 3f 20 28 76 65 63 74 6f 72 2d 65 76  qual? (vector-ev
2570: 65 72 79 20 6c 69 73 74 20 27 23 28 29 20 27 23  ery list '#() '#
2580: 28 61 20 62 20 63 29 29 0a 20 20 20 20 20 20 20  (a b c)).       
2590: 20 20 20 20 20 23 74 29 0a 20 20 20 20 28 66 61       #t).    (fa
25a0: 69 6c 20 27 76 65 63 74 6f 72 2d 65 76 65 72 79  il 'vector-every
25b0: 3a 30 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c  :0))..(or (equal
25c0: 3f 20 28 76 65 63 74 6f 72 2d 65 76 65 72 79 20  ? (vector-every 
25d0: 6c 69 73 74 20 27 23 28 61 20 62 20 63 29 20 27  list '#(a b c) '
25e0: 23 28 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  #()).           
25f0: 20 23 74 29 0a 20 20 20 20 28 66 61 69 6c 20 27   #t).    (fail '
2600: 76 65 63 74 6f 72 2d 65 76 65 72 79 3a 31 29 29  vector-every:1))
2610: 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20 28 76  ..(or (equal? (v
2620: 65 63 74 6f 72 2d 65 76 65 72 79 20 6c 69 73 74  ector-every list
2630: 20 27 23 28 61 20 62 20 63 29 20 27 23 28 64 29   '#(a b c) '#(d)
2640: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 28  ).            '(
2650: 61 20 64 29 29 0a 20 20 20 20 28 66 61 69 6c 20  a d)).    (fail 
2660: 27 76 65 63 74 6f 72 2d 65 76 65 72 79 3a 32 29  'vector-every:2)
2670: 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20 28  )..(or (equal? (
2680: 76 65 63 74 6f 72 2d 65 76 65 72 79 20 6d 65 6d  vector-every mem
2690: 71 20 27 23 28 61 20 62 20 63 29 20 27 23 28 28  q '#(a b c) '#((
26a0: 29 20 28 63 20 64 20 65 29 20 28 62 20 63 20 39  ) (c d e) (b c 9
26b0: 37 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  7))).           
26c0: 20 23 66 29 0a 20 20 20 20 28 66 61 69 6c 20 27   #f).    (fail '
26d0: 76 65 63 74 6f 72 2d 65 76 65 72 79 3a 33 29 29  vector-every:3))
26e0: 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20 28 6c  ..(or (equal? (l
26f0: 65 74 20 28 28 76 20 28 76 65 63 74 6f 72 20 30  et ((v (vector 0
2700: 20 31 20 32 20 33 29 29 29 0a 20 20 20 20 20 20   1 2 3))).      
2710: 20 20 20 20 20 20 20 20 28 76 65 63 74 6f 72 2d          (vector-
2720: 73 65 74 21 20 76 20 31 20 31 31 29 0a 20 20 20  set! v 1 11).   
2730: 20 20 20 20 20 20 20 20 20 20 20 76 29 0a 20 20             v).  
2740: 20 20 20 20 20 20 20 20 20 20 27 23 28 30 20 31            '#(0 1
2750: 31 20 32 20 33 29 29 0a 20 20 20 20 28 66 61 69  1 2 3)).    (fai
2760: 6c 20 27 76 65 63 74 6f 72 2d 73 65 74 21 29 29  l 'vector-set!))
2770: 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20 28 6c  ..(or (equal? (l
2780: 65 74 20 28 28 76 20 28 76 65 63 74 6f 72 20 30  et ((v (vector 0
2790: 20 31 20 32 20 33 29 29 29 0a 20 20 20 20 20 20   1 2 3))).      
27a0: 20 20 20 20 20 20 20 20 28 76 65 63 74 6f 72 2d          (vector-
27b0: 73 77 61 70 21 20 76 20 31 20 33 29 0a 20 20 20  swap! v 1 3).   
27c0: 20 20 20 20 20 20 20 20 20 20 20 76 29 0a 20 20             v).  
27d0: 20 20 20 20 20 20 20 20 20 20 27 23 28 30 20 33            '#(0 3
27e0: 20 32 20 31 29 29 0a 20 20 20 20 28 66 61 69 6c   2 1)).    (fail
27f0: 20 27 76 65 63 74 6f 72 2d 73 77 61 70 21 29 29   'vector-swap!))
2800: 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20 28 6c  ..(or (equal? (l
2810: 65 74 20 28 28 76 20 28 76 65 63 74 6f 72 29 29  et ((v (vector))
2820: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
2830: 28 76 65 63 74 6f 72 2d 66 69 6c 6c 21 20 76 20  (vector-fill! v 
2840: 39 37 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  97).            
2850: 20 20 76 29 0a 20 20 20 20 20 20 20 20 20 20 20    v).           
2860: 20 27 23 28 29 29 0a 20 20 20 20 28 66 61 69 6c   '#()).    (fail
2870: 20 27 76 65 63 74 6f 72 2d 66 69 6c 6c 21 3a 30   'vector-fill!:0
2880: 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20  ))..(or (equal? 
2890: 28 6c 65 74 20 28 28 76 20 28 76 65 63 74 6f 72  (let ((v (vector
28a0: 20 30 20 31 20 32 20 33 29 29 29 0a 20 20 20 20   0 1 2 3))).    
28b0: 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f            (vecto
28c0: 72 2d 66 69 6c 6c 21 20 76 20 39 37 29 0a 20 20  r-fill! v 97).  
28d0: 20 20 20 20 20 20 20 20 20 20 20 20 76 29 0a 20              v). 
28e0: 20 20 20 20 20 20 20 20 20 20 20 27 23 28 39 37             '#(97
28f0: 20 39 37 20 39 37 20 39 37 29 29 0a 20 20 20 20   97 97 97)).    
2900: 28 66 61 69 6c 20 27 76 65 63 74 6f 72 2d 66 69  (fail 'vector-fi
2910: 6c 6c 21 3a 31 29 29 0a 0a 28 6f 72 20 28 65 71  ll!:1))..(or (eq
2920: 75 61 6c 3f 20 28 6c 65 74 20 28 28 76 20 28 76  ual? (let ((v (v
2930: 65 63 74 6f 72 20 30 20 31 20 32 20 33 29 29 29  ector 0 1 2 3)))
2940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  .              (
2950: 76 65 63 74 6f 72 2d 66 69 6c 6c 21 20 76 20 39  vector-fill! v 9
2960: 37 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20  7 1).           
2970: 20 20 20 76 29 0a 20 20 20 20 20 20 20 20 20 20     v).          
2980: 20 20 27 23 28 30 20 39 37 20 39 37 20 39 37 29    '#(0 97 97 97)
2990: 29 0a 20 20 20 20 28 66 61 69 6c 20 27 76 65 63  ).    (fail 'vec
29a0: 74 6f 72 2d 66 69 6c 6c 21 3a 32 29 29 0a 0a 28  tor-fill!:2))..(
29b0: 6f 72 20 28 65 71 75 61 6c 3f 20 28 6c 65 74 20  or (equal? (let 
29c0: 28 28 76 20 28 76 65 63 74 6f 72 20 30 20 31 20  ((v (vector 0 1 
29d0: 32 20 33 29 29 29 0a 20 20 20 20 20 20 20 20 20  2 3))).         
29e0: 20 20 20 20 20 28 76 65 63 74 6f 72 2d 66 69 6c       (vector-fil
29f0: 6c 21 20 76 20 39 37 20 31 20 32 29 0a 20 20 20  l! v 97 1 2).   
2a00: 20 20 20 20 20 20 20 20 20 20 20 76 29 0a 20 20             v).  
2a10: 20 20 20 20 20 20 20 20 20 20 27 23 28 30 20 39            '#(0 9
2a20: 37 20 32 20 33 29 29 0a 20 20 20 20 28 66 61 69  7 2 3)).    (fai
2a30: 6c 20 27 76 65 63 74 6f 72 2d 66 69 6c 6c 21 3a  l 'vector-fill!:
2a40: 33 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f  3))..(or (equal?
2a50: 20 28 6c 65 74 20 28 28 76 20 28 76 65 63 74 6f   (let ((v (vecto
2a60: 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  r))).           
2a70: 20 20 20 28 76 65 63 74 6f 72 2d 72 65 76 65 72     (vector-rever
2a80: 73 65 21 20 76 29 0a 20 20 20 20 20 20 20 20 20  se! v).         
2a90: 20 20 20 20 20 76 29 0a 20 20 20 20 20 20 20 20       v).        
2aa0: 20 20 20 20 27 23 28 29 29 0a 20 20 20 20 28 66      '#()).    (f
2ab0: 61 69 6c 20 27 76 65 63 74 6f 72 2d 72 65 76 65  ail 'vector-reve
2ac0: 72 73 65 21 3a 30 29 29 0a 0a 28 6f 72 20 28 65  rse!:0))..(or (e
2ad0: 71 75 61 6c 3f 20 28 6c 65 74 20 28 28 76 20 28  qual? (let ((v (
2ae0: 76 65 63 74 6f 72 20 30 20 31 20 32 20 33 29 29  vector 0 1 2 3))
2af0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
2b00: 28 76 65 63 74 6f 72 2d 72 65 76 65 72 73 65 21  (vector-reverse!
2b10: 20 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20   v).            
2b20: 20 20 76 29 0a 20 20 20 20 20 20 20 20 20 20 20    v).           
2b30: 20 27 23 28 33 20 32 20 31 20 30 29 29 0a 20 20   '#(3 2 1 0)).  
2b40: 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72 2d    (fail 'vector-
2b50: 72 65 76 65 72 73 65 21 3a 31 29 29 0a 0a 28 6f  reverse!:1))..(o
2b60: 72 20 28 65 71 75 61 6c 3f 20 28 6c 65 74 20 28  r (equal? (let (
2b70: 28 76 20 28 76 65 63 74 6f 72 20 30 20 31 20 32  (v (vector 0 1 2
2b80: 20 33 29 29 29 0a 20 20 20 20 20 20 20 20 20 20   3))).          
2b90: 20 20 20 20 28 76 65 63 74 6f 72 2d 72 65 76 65      (vector-reve
2ba0: 72 73 65 21 20 76 20 31 29 0a 20 20 20 20 20 20  rse! v 1).      
2bb0: 20 20 20 20 20 20 20 20 76 29 0a 20 20 20 20 20          v).     
2bc0: 20 20 20 20 20 20 20 27 23 28 30 20 33 20 32 20         '#(0 3 2 
2bd0: 31 29 29 0a 20 20 20 20 28 66 61 69 6c 20 27 76  1)).    (fail 'v
2be0: 65 63 74 6f 72 2d 72 65 76 65 72 73 65 21 3a 32  ector-reverse!:2
2bf0: 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20  ))..(or (equal? 
2c00: 28 6c 65 74 20 28 28 76 20 28 76 65 63 74 6f 72  (let ((v (vector
2c10: 20 30 20 31 20 32 20 33 29 29 29 0a 20 20 20 20   0 1 2 3))).    
2c20: 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f            (vecto
2c30: 72 2d 72 65 76 65 72 73 65 21 20 76 20 31 20 33  r-reverse! v 1 3
2c40: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
2c50: 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 27  v).            '
2c60: 23 28 30 20 32 20 31 20 33 29 29 0a 20 20 20 20  #(0 2 1 3)).    
2c70: 28 66 61 69 6c 20 27 76 65 63 74 6f 72 2d 72 65  (fail 'vector-re
2c80: 76 65 72 73 65 21 3a 33 29 29 0a 0a 28 6f 72 20  verse!:3))..(or 
2c90: 28 65 71 75 61 6c 3f 20 28 6c 65 74 20 28 28 76  (equal? (let ((v
2ca0: 20 28 76 65 63 74 6f 72 29 29 0a 20 20 20 20 20   (vector)).     
2cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 72               (sr
2cc0: 63 20 27 23 28 31 30 30 20 31 30 31 20 31 30 32  c '#(100 101 102
2cd0: 20 31 30 33 20 31 30 34 20 31 30 35 29 29 29 0a   103 104 105))).
2ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76                (v
2cf0: 65 63 74 6f 72 2d 63 6f 70 79 21 20 76 20 30 20  ector-copy! v 0 
2d00: 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  v).             
2d10: 20 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20   v).            
2d20: 27 23 28 29 29 0a 20 20 20 20 28 66 61 69 6c 20  '#()).    (fail 
2d30: 27 76 65 63 74 6f 72 2d 63 6f 70 79 21 3a 30 29  'vector-copy!:0)
2d40: 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20 28  )..(or (equal? (
2d50: 6c 65 74 20 28 28 76 20 28 76 65 63 74 6f 72 20  let ((v (vector 
2d60: 30 20 31 20 32 20 33 20 34 20 35 29 29 0a 20 20  0 1 2 3 4 5)).  
2d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d80: 28 73 72 63 20 27 23 28 31 30 30 20 31 30 31 20  (src '#(100 101 
2d90: 31 30 32 20 31 30 33 20 31 30 34 20 31 30 35 29  102 103 104 105)
2da0: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
2db0: 20 28 76 65 63 74 6f 72 2d 63 6f 70 79 21 20 76   (vector-copy! v
2dc0: 20 30 20 73 72 63 29 0a 20 20 20 20 20 20 20 20   0 src).        
2dd0: 20 20 20 20 20 20 76 29 0a 20 20 20 20 20 20 20        v).       
2de0: 20 20 20 20 20 27 23 28 31 30 30 20 31 30 31 20       '#(100 101 
2df0: 31 30 32 20 31 30 33 20 31 30 34 20 31 30 35 29  102 103 104 105)
2e00: 29 0a 20 20 20 20 28 66 61 69 6c 20 27 76 65 63  ).    (fail 'vec
2e10: 74 6f 72 2d 63 6f 70 79 21 3a 31 29 29 0a 0a 28  tor-copy!:1))..(
2e20: 6f 72 20 28 65 71 75 61 6c 3f 20 28 6c 65 74 20  or (equal? (let 
2e30: 28 28 76 20 28 76 65 63 74 6f 72 20 30 20 31 20  ((v (vector 0 1 
2e40: 32 20 33 29 29 0a 20 20 20 20 20 20 20 20 20 20  2 3)).          
2e50: 20 20 20 20 20 20 20 20 28 73 72 63 20 27 23 28          (src '#(
2e60: 31 30 30 20 31 30 31 20 31 30 32 20 31 30 33 20  100 101 102 103 
2e70: 31 30 34 20 31 30 35 29 29 29 0a 20 20 20 20 20  104 105))).     
2e80: 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f 72           (vector
2e90: 2d 63 6f 70 79 21 20 76 20 31 20 73 72 63 20 34  -copy! v 1 src 4
2ea0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
2eb0: 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 27  v).            '
2ec0: 23 28 30 20 31 30 34 20 31 30 35 20 33 29 29 0a  #(0 104 105 3)).
2ed0: 20 20 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f      (fail 'vecto
2ee0: 72 2d 63 6f 70 79 21 3a 32 29 29 0a 0a 28 6f 72  r-copy!:2))..(or
2ef0: 20 28 65 71 75 61 6c 3f 20 28 6c 65 74 20 28 28   (equal? (let ((
2f00: 76 20 28 76 65 63 74 6f 72 20 30 20 31 20 32 20  v (vector 0 1 2 
2f10: 33 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  3)).            
2f20: 20 20 20 20 20 20 28 73 72 63 20 27 23 28 31 30        (src '#(10
2f30: 30 20 31 30 31 20 31 30 32 20 31 30 33 20 31 30  0 101 102 103 10
2f40: 34 20 31 30 35 29 29 29 0a 20 20 20 20 20 20 20  4 105))).       
2f50: 20 20 20 20 20 20 20 28 76 65 63 74 6f 72 2d 63         (vector-c
2f60: 6f 70 79 21 20 76 20 31 20 73 72 63 20 32 20 34  opy! v 1 src 2 4
2f70: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
2f80: 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 27  v).            '
2f90: 23 28 30 20 31 30 32 20 31 30 33 20 33 29 29 0a  #(0 102 103 3)).
2fa0: 20 20 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f      (fail 'vecto
2fb0: 72 2d 63 6f 70 79 21 3a 33 29 29 0a 0a 28 6f 72  r-copy!:3))..(or
2fc0: 20 28 65 71 75 61 6c 3f 20 28 6c 65 74 20 28 28   (equal? (let ((
2fd0: 76 20 28 76 65 63 74 6f 72 29 29 0a 20 20 20 20  v (vector)).    
2fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73                (s
2ff0: 72 63 20 27 23 28 31 30 30 20 31 30 31 20 31 30  rc '#(100 101 10
3000: 32 20 31 30 33 20 31 30 34 20 31 30 35 29 29 29  2 103 104 105)))
3010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  .              (
3020: 76 65 63 74 6f 72 2d 72 65 76 65 72 73 65 2d 63  vector-reverse-c
3030: 6f 70 79 21 20 76 20 30 20 76 29 0a 20 20 20 20  opy! v 0 v).    
3040: 20 20 20 20 20 20 20 20 20 20 76 29 0a 20 20 20            v).   
3050: 20 20 20 20 20 20 20 20 20 27 23 28 29 29 0a 20           '#()). 
3060: 20 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72     (fail 'vector
3070: 2d 72 65 76 65 72 73 65 2d 63 6f 70 79 21 3a 30  -reverse-copy!:0
3080: 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20  ))..(or (equal? 
3090: 28 6c 65 74 20 28 28 76 20 28 76 65 63 74 6f 72  (let ((v (vector
30a0: 20 30 20 31 20 32 20 33 20 34 20 35 29 29 0a 20   0 1 2 3 4 5)). 
30b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c0: 20 28 73 72 63 20 27 23 28 31 30 30 20 31 30 31   (src '#(100 101
30d0: 20 31 30 32 20 31 30 33 20 31 30 34 20 31 30 35   102 103 104 105
30e0: 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))).            
30f0: 20 20 28 76 65 63 74 6f 72 2d 72 65 76 65 72 73    (vector-revers
3100: 65 2d 63 6f 70 79 21 20 76 20 30 20 73 72 63 29  e-copy! v 0 src)
3110: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76  .              v
3120: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 23  ).            '#
3130: 28 31 30 35 20 31 30 34 20 31 30 33 20 31 30 32  (105 104 103 102
3140: 20 31 30 31 20 31 30 30 29 29 0a 20 20 20 20 28   101 100)).    (
3150: 66 61 69 6c 20 27 76 65 63 74 6f 72 2d 72 65 76  fail 'vector-rev
3160: 65 72 73 65 2d 63 6f 70 79 21 3a 31 29 29 0a 0a  erse-copy!:1))..
3170: 28 6f 72 20 28 65 71 75 61 6c 3f 20 28 6c 65 74  (or (equal? (let
3180: 20 28 28 76 20 28 76 65 63 74 6f 72 20 30 20 31   ((v (vector 0 1
3190: 20 32 20 33 29 29 0a 20 20 20 20 20 20 20 20 20   2 3)).         
31a0: 20 20 20 20 20 20 20 20 20 28 73 72 63 20 27 23           (src '#
31b0: 28 31 30 30 20 31 30 31 20 31 30 32 20 31 30 33  (100 101 102 103
31c0: 20 31 30 34 20 31 30 35 29 29 29 0a 20 20 20 20   104 105))).    
31d0: 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f            (vecto
31e0: 72 2d 72 65 76 65 72 73 65 2d 63 6f 70 79 21 20  r-reverse-copy! 
31f0: 76 20 31 20 73 72 63 20 34 29 0a 20 20 20 20 20  v 1 src 4).     
3200: 20 20 20 20 20 20 20 20 20 76 29 0a 20 20 20 20           v).    
3210: 20 20 20 20 20 20 20 20 27 23 28 30 20 31 30 35          '#(0 105
3220: 20 31 30 34 20 33 29 29 0a 20 20 20 20 28 66 61   104 3)).    (fa
3230: 69 6c 20 27 76 65 63 74 6f 72 2d 72 65 76 65 72  il 'vector-rever
3240: 73 65 2d 63 6f 70 79 21 3a 32 29 29 0a 0a 28 6f  se-copy!:2))..(o
3250: 72 20 28 65 71 75 61 6c 3f 20 28 6c 65 74 20 28  r (equal? (let (
3260: 28 76 20 28 76 65 63 74 6f 72 20 30 20 31 20 32  (v (vector 0 1 2
3270: 20 33 29 29 0a 20 20 20 20 20 20 20 20 20 20 20   3)).           
3280: 20 20 20 20 20 20 20 28 73 72 63 20 27 23 28 31         (src '#(1
3290: 30 30 20 31 30 31 20 31 30 32 20 31 30 33 20 31  00 101 102 103 1
32a0: 30 34 20 31 30 35 29 29 29 0a 20 20 20 20 20 20  04 105))).      
32b0: 20 20 20 20 20 20 20 20 28 76 65 63 74 6f 72 2d          (vector-
32c0: 72 65 76 65 72 73 65 2d 63 6f 70 79 21 20 76 20  reverse-copy! v 
32d0: 31 20 73 72 63 20 32 20 34 29 0a 20 20 20 20 20  1 src 2 4).     
32e0: 20 20 20 20 20 20 20 20 20 76 29 0a 20 20 20 20           v).    
32f0: 20 20 20 20 20 20 20 20 27 23 28 30 20 31 30 33          '#(0 103
3300: 20 31 30 32 20 33 29 29 0a 20 20 20 20 28 66 61   102 3)).    (fa
3310: 69 6c 20 27 76 65 63 74 6f 72 2d 72 65 76 65 72  il 'vector-rever
3320: 73 65 2d 63 6f 70 79 21 3a 33 29 29 0a 0a 28 6f  se-copy!:3))..(o
3330: 72 20 28 65 71 75 61 6c 3f 20 28 76 65 63 74 6f  r (equal? (vecto
3340: 72 2d 3e 6c 69 73 74 20 27 23 28 29 29 0a 20 20  r->list '#()).  
3350: 20 20 20 20 20 20 20 20 20 20 27 28 29 29 0a 20            '()). 
3360: 20 20 20 28 66 61 69 6c 20 27 76 65 63 74 6f 72     (fail 'vector
3370: 2d 3e 6c 69 73 74 3a 30 29 29 0a 0a 28 6f 72 20  ->list:0))..(or 
3380: 28 65 71 75 61 6c 3f 20 28 76 65 63 74 6f 72 2d  (equal? (vector-
3390: 3e 6c 69 73 74 20 27 23 28 61 20 62 20 63 29 29  >list '#(a b c))
33a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 28 61  .            '(a
33b0: 20 62 20 63 29 29 0a 20 20 20 20 28 66 61 69 6c   b c)).    (fail
33c0: 20 27 76 65 63 74 6f 72 2d 3e 6c 69 73 74 3a 31   'vector->list:1
33d0: 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20  ))..(or (equal? 
33e0: 28 76 65 63 74 6f 72 2d 3e 6c 69 73 74 20 27 23  (vector->list '#
33f0: 28 61 20 62 20 63 20 64 20 65 29 20 31 29 0a 20  (a b c d e) 1). 
3400: 20 20 20 20 20 20 20 20 20 20 20 27 28 62 20 63             '(b c
3410: 20 64 20 65 29 29 0a 20 20 20 20 28 66 61 69 6c   d e)).    (fail
3420: 20 27 76 65 63 74 6f 72 2d 3e 6c 69 73 74 3a 32   'vector->list:2
3430: 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20  ))..(or (equal? 
3440: 28 76 65 63 74 6f 72 2d 3e 6c 69 73 74 20 27 23  (vector->list '#
3450: 28 61 20 62 20 63 20 64 20 65 29 20 31 20 34 29  (a b c d e) 1 4)
3460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 27 28 62  .            '(b
3470: 20 63 20 64 29 29 0a 20 20 20 20 28 66 61 69 6c   c d)).    (fail
3480: 20 27 76 65 63 74 6f 72 2d 3e 6c 69 73 74 3a 33   'vector->list:3
3490: 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20  ))..(or (equal? 
34a0: 28 72 65 76 65 72 73 65 2d 76 65 63 74 6f 72 2d  (reverse-vector-
34b0: 3e 6c 69 73 74 20 27 23 28 29 29 0a 20 20 20 20  >list '#()).    
34c0: 20 20 20 20 20 20 20 20 27 28 29 29 0a 20 20 20          '()).   
34d0: 20 28 66 61 69 6c 20 27 72 65 76 65 72 73 65 2d   (fail 'reverse-
34e0: 76 65 63 74 6f 72 2d 3e 6c 69 73 74 3a 30 29 29  vector->list:0))
34f0: 0a 0a 28 6f 72 20 28 65 71 75 61 6c 3f 20 28 72  ..(or (equal? (r
3500: 65 76 65 72 73 65 2d 76 65 63 74 6f 72 2d 3e 6c  everse-vector->l
3510: 69 73 74 20 27 23 28 61 20 62 20 63 29 29 0a 20  ist '#(a b c)). 
3520: 20 20 20 20 20 20 20 20 20 20 20 27 28 63 20 62             '(c b
3530: 20 61 29 29 0a 20 20 20 20 28 66 61 69 6c 20 27   a)).    (fail '
3540: 72 65 76 65 72 73 65 2d 76 65 63 74 6f 72 2d 3e  reverse-vector->
3550: 6c 69 73 74 3a 31 29 29 0a 0a 28 6f 72 20 28 65  list:1))..(or (e
3560: 71 75 61 6c 3f 20 28 72 65 76 65 72 73 65 2d 76  qual? (reverse-v
3570: 65 63 74 6f 72 2d 3e 6c 69 73 74 20 27 23 28 61  ector->list '#(a
3580: 20 62 20 63 20 64 20 65 29 20 31 29 0a 20 20 20   b c d e) 1).   
3590: 20 20 20 20 20 20 20 20 20 27 28 65 20 64 20 63           '(e d c
35a0: 20 62 29 29 0a 20 20 20 20 28 66 61 69 6c 20 27   b)).    (fail '
35b0: 72 65 76 65 72 73 65 2d 76 65 63 74 6f 72 2d 3e  reverse-vector->
35c0: 6c 69 73 74 3a 32 29 29 0a 0a 28 6f 72 20 28 65  list:2))..(or (e
35d0: 71 75 61 6c 3f 20 28 72 65 76 65 72 73 65 2d 76  qual? (reverse-v
35e0: 65 63 74 6f 72 2d 3e 6c 69 73 74 20 27 23 28 61  ector->list '#(a
35f0: 20 62 20 63 20 64 20 65 29 20 31 20 33 29 0a 20   b c d e) 1 3). 
3600: 20 20 20 20 20 20 20 20 20 20 20 27 28 63 20 62             '(c b
3610: 29 29 0a 20 20 20 20 28 66 61 69 6c 20 27 72 65  )).    (fail 're
3620: 76 65 72 73 65 2d 76 65 63 74 6f 72 2d 3e 6c 69  verse-vector->li
3630: 73 74 3a 33 29 29 0a 0a 28 6f 72 20 28 65 71 75  st:3))..(or (equ
3640: 61 6c 3f 20 28 6c 69 73 74 2d 3e 76 65 63 74 6f  al? (list->vecto
3650: 72 20 27 28 29 29 0a 20 20 20 20 20 20 20 20 20  r '()).         
3660: 20 20 20 27 23 28 29 29 0a 20 20 20 20 28 66 61     '#()).    (fa
3670: 69 6c 20 27 6c 69 73 74 2d 3e 76 65 63 74 6f 72  il 'list->vector
3680: 3a 30 29 29 0a 0a 28 6f 72 20 28 65 71 75 61 6c  :0))..(or (equal
3690: 3f 20 28 6c 69 73 74 2d 3e 76 65 63 74 6f 72 20  ? (list->vector 
36a0: 27 28 61 20 62 20 63 29 29 0a 20 20 20 20 20 20  '(a b c)).      
36b0: 20 20 20 20 20 20 27 23 28 61 20 62 20 63 29 29        '#(a b c))
36c0: 0a 20 20 20 20 28 66 61 69 6c 20 27 6c 69 73 74  .    (fail 'list
36d0: 2d 3e 76 65 63 74 6f 72 3a 31 29 29 0a 0a 28 6f  ->vector:1))..(o
36e0: 72 20 28 65 71 75 61 6c 3f 20 28 72 65 76 65 72  r (equal? (rever
36f0: 73 65 2d 6c 69 73 74 2d 3e 76 65 63 74 6f 72 20  se-list->vector 
3700: 27 28 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  '()).           
3710: 20 27 23 28 29 29 0a 20 20 20 20 28 66 61 69 6c   '#()).    (fail
3720: 20 27 72 65 76 65 72 73 65 2d 6c 69 73 74 2d 3e   'reverse-list->
3730: 76 65 63 74 6f 72 3a 30 29 29 0a 0a 28 6f 72 20  vector:0))..(or 
3740: 28 65 71 75 61 6c 3f 20 28 72 65 76 65 72 73 65  (equal? (reverse
3750: 2d 6c 69 73 74 2d 3e 76 65 63 74 6f 72 20 27 28  -list->vector '(
3760: 61 20 62 20 63 29 29 0a 20 20 20 20 20 20 20 20  a b c)).        
3770: 20 20 20 20 27 23 28 63 20 62 20 61 29 29 0a 20      '#(c b a)). 
3780: 20 20 20 28 66 61 69 6c 20 27 72 65 76 65 72 73     (fail 'revers
3790: 65 2d 6c 69 73 74 2d 3e 76 65 63 74 6f 72 3a 31  e-list->vector:1
37a0: 29 29 0a 0a 28 77 72 69 74 65 6c 6e 20 22 44 6f  ))..(writeln "Do
37b0: 6e 65 2e 22 29 0a                                ne.").