Hex Artifact Content
Not logged in

Artifact 72138ccb98bfa1ea8646ed1277b762fa63758d68:


0000: 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28 63 29  ;; Copyright (c)
0010: 20 32 30 30 39 20 44 65 72 69 63 6b 20 45 64 64   2009 Derick Edd
0020: 69 6e 67 74 6f 6e 2e 20 20 41 6c 6c 20 72 69 67  ington.  All rig
0030: 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 3b 3b  hts reserved..;;
0040: 20 4c 69 63 65 6e 73 65 64 20 75 6e 64 65 72 20   Licensed under 
0050: 61 6e 20 4d 49 54 2d 73 74 79 6c 65 20 6c 69 63  an MIT-style lic
0060: 65 6e 73 65 2e 20 20 4d 79 20 6c 69 63 65 6e 73  ense.  My licens
0070: 65 20 69 73 20 69 6e 20 74 68 65 20 66 69 6c 65  e is in the file
0080: 0a 3b 3b 20 6e 61 6d 65 64 20 4c 49 43 45 4e 53  .;; named LICENS
0090: 45 20 66 72 6f 6d 20 74 68 65 20 6f 72 69 67 69  E from the origi
00a0: 6e 61 6c 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 74  nal collection t
00b0: 68 69 73 20 66 69 6c 65 20 69 73 20 64 69 73 74  his file is dist
00c0: 72 69 62 75 74 65 64 0a 3b 3b 20 77 69 74 68 2e  ributed.;; with.
00d0: 20 20 49 66 20 74 68 69 73 20 66 69 6c 65 20 69    If this file i
00e0: 73 20 72 65 64 69 73 74 72 69 62 75 74 65 64 20  s redistributed 
00f0: 77 69 74 68 20 73 6f 6d 65 20 6f 74 68 65 72 20  with some other 
0100: 63 6f 6c 6c 65 63 74 69 6f 6e 2c 20 6d 79 0a 3b  collection, my.;
0110: 3b 20 6c 69 63 65 6e 73 65 20 6d 75 73 74 20 61  ; license must a
0120: 6c 73 6f 20 62 65 20 69 6e 63 6c 75 64 65 64 2e  lso be included.
0130: 0a 0a 23 21 72 36 72 73 0a 28 6c 69 62 72 61 72  ..#!r6rs.(librar
0140: 79 20 28 73 72 66 69 20 70 72 69 76 61 74 65 20  y (srfi private 
0150: 72 65 67 69 73 74 72 79 29 0a 20 20 28 65 78 70  registry).  (exp
0160: 6f 72 74 0a 20 20 20 20 61 76 61 69 6c 61 62 6c  ort.    availabl
0170: 65 2d 66 65 61 74 75 72 65 73 29 0a 20 20 28 69  e-features).  (i
0180: 6d 70 6f 72 74 20 0a 20 20 20 20 28 72 6e 72 73  mport .    (rnrs
0190: 29 0a 20 20 20 20 28 73 72 66 69 20 70 72 69 76  ).    (srfi priv
01a0: 61 74 65 20 70 6c 61 74 66 6f 72 6d 2d 66 65 61  ate platform-fea
01b0: 74 75 72 65 73 29 29 0a 20 20 0a 20 20 28 64 65  tures)).  .  (de
01c0: 66 69 6e 65 20 61 76 61 69 6c 61 62 6c 65 2d 66  fine available-f
01d0: 65 61 74 75 72 65 73 0a 20 20 20 20 28 6c 65 74  eatures.    (let
01e0: 2d 73 79 6e 74 61 78 0a 20 20 20 20 20 20 20 20  -syntax.        
01f0: 28 28 53 52 46 49 2d 66 65 61 74 75 72 65 73 0a  ((SRFI-features.
0200: 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64            (lambd
0210: 61 20 28 73 74 78 29 0a 20 20 20 20 20 20 20 20  a (stx).        
0220: 20 20 20 20 28 64 65 66 69 6e 65 20 53 52 46 49      (define SRFI
0230: 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  s.              
0240: 27 28 28 30 20 20 20 20 63 6f 6e 64 2d 65 78 70  '((0    cond-exp
0250: 61 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20  and).           
0260: 20 20 20 20 20 28 31 20 20 20 20 6c 69 73 74 73       (1    lists
0270: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
0280: 20 20 28 32 20 20 20 20 61 6e 64 2d 6c 65 74 2a    (2    and-let*
0290: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
02a0: 20 20 23 3b 28 35 20 20 20 20 6c 65 74 29 0a 20    #;(5    let). 
02b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
02c0: 36 20 20 20 20 62 61 73 69 63 2d 73 74 72 69 6e  6    basic-strin
02d0: 67 2d 70 6f 72 74 73 29 0a 20 20 20 20 20 20 20  g-ports).       
02e0: 20 20 20 20 20 20 20 20 20 28 38 20 20 20 20 72           (8    r
02f0: 65 63 65 69 76 65 29 0a 20 20 20 20 20 20 20 20  eceive).        
0300: 20 20 20 20 20 20 20 20 28 39 20 20 20 20 72 65          (9    re
0310: 63 6f 72 64 73 29 0a 20 20 20 20 20 20 20 20 20  cords).         
0320: 20 20 20 20 20 20 20 28 31 31 20 20 20 6c 65 74         (11   let
0330: 2d 76 61 6c 75 65 73 29 0a 20 20 20 20 20 20 20  -values).       
0340: 20 20 20 20 20 20 20 20 20 28 31 33 20 20 20 73           (13   s
0350: 74 72 69 6e 67 73 29 0a 20 20 20 20 20 20 20 20  trings).        
0360: 20 20 20 20 20 20 20 20 28 31 34 20 20 20 63 68          (14   ch
0370: 61 72 2d 73 65 74 73 29 0a 20 20 20 20 20 20 20  ar-sets).       
0380: 20 20 20 20 20 20 20 20 20 28 31 36 20 20 20 63           (16   c
0390: 61 73 65 2d 6c 61 6d 62 64 61 29 0a 20 20 20 20  ase-lambda).    
03a0: 20 20 20 20 20 20 20 20 20 20 20 20 23 3b 28 31              #;(1
03b0: 37 20 20 20 67 65 6e 65 72 61 6c 69 7a 65 64 2d  7   generalized-
03c0: 73 65 74 21 29 0a 20 20 20 20 20 20 20 20 20 20  set!).          
03d0: 20 20 20 20 20 20 23 3b 28 31 38 20 20 20 6d 75        #;(18   mu
03e0: 6c 74 69 74 68 72 65 61 64 69 6e 67 29 0a 20 20  ltithreading).  
03f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 31                (1
0400: 39 20 20 20 74 69 6d 65 29 0a 20 20 20 20 20 20  9   time).      
0410: 20 20 20 20 20 20 20 20 20 20 23 3b 28 32 31 20            #;(21 
0420: 20 20 72 65 61 6c 2d 74 69 6d 65 2d 6d 75 6c 74    real-time-mult
0430: 69 74 68 72 65 61 64 69 6e 67 29 0a 20 20 20 20  ithreading).    
0440: 20 20 20 20 20 20 20 20 20 20 20 20 28 32 33 20              (23 
0450: 20 20 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20    error).       
0460: 20 20 20 20 20 20 20 20 20 28 32 35 20 20 20 6d           (25   m
0470: 75 6c 74 69 2d 64 69 6d 65 6e 73 69 6f 6e 61 6c  ulti-dimensional
0480: 2d 61 72 72 61 79 73 29 0a 20 20 20 20 20 20 20  -arrays).       
0490: 20 20 20 20 20 20 20 20 20 28 32 36 20 20 20 63           (26   c
04a0: 75 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ut).            
04b0: 20 20 20 20 28 32 37 20 20 20 72 61 6e 64 6f 6d      (27   random
04c0: 2d 62 69 74 73 29 0a 20 20 20 20 20 20 20 20 20  -bits).         
04d0: 20 20 20 20 20 20 20 23 3b 28 32 38 20 20 20 62         #;(28   b
04e0: 61 73 69 63 2d 66 6f 72 6d 61 74 2d 73 74 72 69  asic-format-stri
04f0: 6e 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20  ngs).           
0500: 20 20 20 20 20 23 3b 28 32 39 20 20 20 6c 6f 63       #;(29   loc
0510: 61 6c 69 7a 61 74 69 6f 6e 29 0a 20 20 20 20 20  alization).     
0520: 20 20 20 20 20 20 20 20 20 20 20 28 33 31 20 20             (31  
0530: 20 72 65 63 29 0a 20 20 20 20 20 20 20 20 20 20   rec).          
0540: 20 20 20 20 20 20 28 33 37 20 20 20 61 72 67 73        (37   args
0550: 2d 66 6f 6c 64 29 0a 20 20 20 20 20 20 20 20 20  -fold).         
0560: 20 20 20 20 20 20 20 28 33 38 20 20 20 77 69 74         (38   wit
0570: 68 2d 73 68 61 72 65 64 2d 73 74 72 75 63 74 75  h-shared-structu
0580: 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  re).            
0590: 20 20 20 20 28 33 39 20 20 20 70 61 72 61 6d 65      (39   parame
05a0: 74 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20  ters).          
05b0: 20 20 20 20 20 20 28 34 31 20 20 20 73 74 72 65        (41   stre
05c0: 61 6d 73 29 0a 20 20 20 20 20 20 20 20 20 20 20  ams).           
05d0: 20 20 20 20 20 28 34 32 20 20 20 65 61 67 65 72       (42   eager
05e0: 2d 63 6f 6d 70 72 65 68 65 6e 73 69 6f 6e 73 29  -comprehensions)
05f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0600: 20 28 34 33 20 20 20 76 65 63 74 6f 72 73 29 0a   (43   vectors).
0610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0620: 23 3b 28 34 34 20 20 20 63 6f 6c 6c 65 63 74 69  #;(44   collecti
0630: 6f 6e 73 29 0a 20 20 20 20 20 20 20 20 20 20 20  ons).           
0640: 20 20 20 20 20 23 3b 28 34 35 20 20 20 6c 61 7a       #;(45   laz
0650: 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y).             
0660: 20 20 20 23 3b 28 34 36 20 20 20 73 79 6e 74 61     #;(46   synta
0670: 78 2d 72 75 6c 65 73 29 0a 20 20 20 20 20 20 20  x-rules).       
0680: 20 20 20 20 20 20 20 20 20 23 3b 28 34 37 20 20           #;(47  
0690: 20 61 72 72 61 79 73 29 0a 20 20 20 20 20 20 20   arrays).       
06a0: 20 20 20 20 20 20 20 20 20 28 34 38 20 20 20 69           (48   i
06b0: 6e 74 65 72 6d 65 64 69 61 74 65 2d 66 6f 72 6d  ntermediate-form
06c0: 61 74 2d 73 74 72 69 6e 67 73 29 0a 20 20 20 20  at-strings).    
06d0: 20 20 20 20 20 20 20 20 20 20 20 20 23 3b 28 35              #;(5
06e0: 31 20 20 20 72 65 73 74 2d 76 61 6c 75 65 73 29  1   rest-values)
06f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0700: 20 23 3b 28 35 34 20 20 20 63 61 74 29 0a 20 20   #;(54   cat).  
0710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 3b                #;
0720: 28 35 37 20 20 20 72 65 63 6f 72 64 73 29 0a 20  (57   records). 
0730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23                 #
0740: 3b 28 35 39 20 20 20 76 69 63 69 6e 69 74 69 65  ;(59   vicinitie
0750: 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s).             
0760: 20 20 20 23 3b 28 36 30 20 20 20 69 6e 74 65 67     #;(60   integ
0770: 65 72 2d 62 69 74 73 29 0a 20 20 20 20 20 20 20  er-bits).       
0780: 20 20 20 20 20 20 20 20 20 28 36 31 20 20 20 63           (61   c
0790: 6f 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20  ond).           
07a0: 20 20 20 20 20 23 3b 28 36 33 20 20 20 61 72 72       #;(63   arr
07b0: 61 79 73 29 0a 20 20 20 20 20 20 20 20 20 20 20  ays).           
07c0: 20 20 20 20 20 28 36 34 20 20 20 74 65 73 74 69       (64   testi
07d0: 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ng).            
07e0: 20 20 20 20 23 3b 28 36 36 20 20 20 6f 63 74 65      #;(66   octe
07f0: 74 2d 76 65 63 74 6f 72 73 29 0a 20 20 20 20 20  t-vectors).     
0800: 20 20 20 20 20 20 20 20 20 20 20 28 36 37 20 20             (67  
0810: 20 63 6f 6d 70 61 72 65 2d 70 72 6f 63 65 64 75   compare-procedu
0820: 72 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20  res).           
0830: 20 20 20 20 20 28 36 39 20 20 20 62 61 73 69 63       (69   basic
0840: 2d 68 61 73 68 2d 74 61 62 6c 65 73 29 0a 20 20  -hash-tables).  
0850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 3b                #;
0860: 28 37 31 20 20 20 6c 65 74 29 0a 20 20 20 20 20  (71   let).     
0870: 20 20 20 20 20 20 20 20 20 20 20 23 3b 28 37 34             #;(74
0880: 20 20 20 62 6c 6f 62 73 29 0a 20 20 20 20 20 20     blobs).      
0890: 20 20 20 20 20 20 20 20 20 20 28 37 38 20 20 20            (78   
08a0: 6c 69 67 68 74 77 65 69 67 68 74 2d 74 65 73 74  lightweight-test
08b0: 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20  ing).           
08c0: 20 20 20 20 20 23 3b 28 38 36 20 20 20 6d 75 2d       #;(86   mu-
08d0: 61 6e 64 2d 6e 75 29 0a 20 20 20 20 20 20 20 20  and-nu).        
08e0: 20 20 20 20 20 20 20 20 23 3b 28 38 37 20 20 20          #;(87   
08f0: 63 61 73 65 29 0a 20 20 20 20 20 20 20 20 20 20  case).          
0900: 20 20 20 20 20 20 23 3b 28 39 35 20 20 20 73 6f        #;(95   so
0910: 72 74 69 6e 67 2d 61 6e 64 2d 6d 65 72 67 69 6e  rting-and-mergin
0920: 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  g).             
0930: 20 20 20 28 39 38 20 20 20 6f 73 2d 65 6e 76 69     (98   os-envi
0940: 72 6f 6e 6d 65 6e 74 2d 76 61 72 69 61 62 6c 65  ronment-variable
0950: 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s).             
0960: 20 20 20 28 39 39 20 20 20 72 65 63 6f 72 64 73     (99   records
0970: 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))).            
0980: 28 64 65 66 69 6e 65 20 28 6d 61 6b 65 2d 66 65  (define (make-fe
0990: 61 74 75 72 65 2d 6e 61 6d 65 73 20 78 29 0a 20  ature-names x). 
09a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65               (de
09b0: 66 69 6e 65 20 6e 75 6d 62 65 72 20 63 61 72 29  fine number car)
09c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  .              (
09d0: 64 65 66 69 6e 65 20 6d 6e 65 6d 6f 6e 69 63 20  define mnemonic 
09e0: 63 64 72 29 0a 20 20 20 20 20 20 20 20 20 20 20  cdr).           
09f0: 20 20 20 28 64 65 66 69 6e 65 20 28 6d 61 6b 65     (define (make
0a00: 2d 73 79 6d 62 6f 6c 20 2e 20 61 72 67 73 29 0a  -symbol . args).
0a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a20: 28 73 74 72 69 6e 67 2d 3e 73 79 6d 62 6f 6c 20  (string->symbol 
0a30: 28 61 70 70 6c 79 20 73 74 72 69 6e 67 2d 61 70  (apply string-ap
0a40: 70 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20  pend.           
0a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a60: 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70              (map
0a70: 20 28 6c 61 6d 62 64 61 20 28 61 29 0a 20 20 20   (lambda (a).   
0a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0aa0: 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28             (if (
0ab0: 73 79 6d 62 6f 6c 3f 20 61 29 0a 20 20 20 20 20  symbol? a).     
0ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ae0: 20 20 20 20 20 20 20 20 20 20 20 28 73 79 6d 62             (symb
0af0: 6f 6c 2d 3e 73 74 72 69 6e 67 20 61 29 0a 20 20  ol->string a).  
0b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 29                a)
0b30: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
0b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72                ar
0b60: 67 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  gs)))).         
0b70: 20 20 20 20 20 28 6c 65 74 2a 20 28 28 6e 2d 73       (let* ((n-s
0b80: 74 72 20 28 6e 75 6d 62 65 72 2d 3e 73 74 72 69  tr (number->stri
0b90: 6e 67 20 28 6e 75 6d 62 65 72 20 78 29 29 29 0a  ng (number x))).
0ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0bb0: 20 20 20 20 20 28 63 6f 6c 6f 6e 2d 6e 20 28 6d       (colon-n (m
0bc0: 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 3a 22 20 6e  ake-symbol ":" n
0bd0: 2d 73 74 72 29 29 0a 20 20 20 20 20 20 20 20 20  -str)).         
0be0: 20 20 20 20 20 20 20 20 20 20 20 20 28 73 72 66              (srf
0bf0: 69 2d 6e 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c  i-n (make-symbol
0c00: 20 22 73 72 66 69 2d 22 20 6e 2d 73 74 72 29 29   "srfi-" n-str))
0c10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0c20: 20 20 20 20 20 20 28 73 72 66 69 2d 6e 2d 6d 20        (srfi-n-m 
0c30: 28 61 70 70 6c 79 20 6d 61 6b 65 2d 73 79 6d 62  (apply make-symb
0c40: 6f 6c 20 73 72 66 69 2d 6e 0a 20 20 20 20 20 20  ol srfi-n.      
0c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c70: 28 6d 61 70 20 28 6c 61 6d 62 64 61 20 28 6d 29  (map (lambda (m)
0c80: 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 2d   (make-symbol "-
0c90: 22 20 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20  " m)).          
0ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0cc0: 20 28 6d 6e 65 6d 6f 6e 69 63 20 78 29 29 29 29   (mnemonic x))))
0cd0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
0ce0: 20 20 3b 3b 20 54 68 65 20 66 69 72 73 74 20 74    ;; The first t
0cf0: 77 6f 20 61 72 65 20 72 65 63 6f 6d 6d 65 6e 64  wo are recommend
0d00: 65 64 20 62 79 20 53 52 46 49 2d 39 37 2e 0a 20  ed by SRFI-97.. 
0d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b                 ;
0d20: 3b 20 54 68 65 20 6c 61 73 74 20 74 77 6f 20 61  ; The last two a
0d30: 72 65 20 74 68 65 20 74 77 6f 20 74 79 70 65 73  re the two types
0d40: 20 6f 66 20 53 52 46 49 2d 39 37 20 6c 69 62 72   of SRFI-97 libr
0d50: 61 72 79 20 6e 61 6d 65 2e 0a 20 20 20 20 20 20  ary name..      
0d60: 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20            (list 
0d70: 73 72 66 69 2d 6e 0a 20 20 20 20 20 20 20 20 20  srfi-n.         
0d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 72 66               srf
0d90: 69 2d 6e 2d 6d 0a 20 20 20 20 20 20 20 20 20 20  i-n-m.          
0da0: 20 20 20 20 20 20 20 20 20 20 20 20 60 28 73 72              `(sr
0db0: 66 69 20 2c 63 6f 6c 6f 6e 2d 6e 29 0a 20 20 20  fi ,colon-n).   
0dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0dd0: 20 20 20 60 28 73 72 66 69 20 2c 63 6f 6c 6f 6e     `(srfi ,colon
0de0: 2d 6e 20 2e 20 2c 28 6d 6e 65 6d 6f 6e 69 63 20  -n . ,(mnemonic 
0df0: 78 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  x))))).         
0e00: 20 20 20 28 73 79 6e 74 61 78 2d 63 61 73 65 20     (syntax-case 
0e10: 73 74 78 20 28 29 0a 20 20 20 20 20 20 20 20 20  stx ().         
0e20: 20 20 20 20 20 28 28 6b 77 29 0a 20 20 20 20 20       ((kw).     
0e30: 20 20 20 20 20 20 20 20 20 20 23 60 28 71 75 6f            #`(quo
0e40: 74 65 20 23 2c 28 64 61 74 75 6d 2d 3e 73 79 6e  te #,(datum->syn
0e50: 74 61 78 20 23 27 6b 77 0a 20 20 20 20 20 20 20  tax #'kw.       
0e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0e70: 20 20 20 20 28 61 70 70 6c 79 20 61 70 70 65 6e      (apply appen
0e80: 64 20 28 6d 61 70 20 6d 61 6b 65 2d 66 65 61 74  d (map make-feat
0e90: 75 72 65 2d 6e 61 6d 65 73 20 53 52 46 49 73 29  ure-names SRFIs)
0ea0: 29 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 60  )))))))).      `
0eb0: 28 2c 40 28 4f 53 2d 66 65 61 74 75 72 65 73 29  (,@(OS-features)
0ec0: 0a 20 20 20 20 20 20 20 20 2c 40 28 69 6d 70 6c  .        ,@(impl
0ed0: 65 6d 65 6e 74 61 74 69 6f 6e 2d 66 65 61 74 75  ementation-featu
0ee0: 72 65 73 29 0a 20 20 20 20 20 20 20 20 2c 40 28  res).        ,@(
0ef0: 53 52 46 49 2d 66 65 61 74 75 72 65 73 29 0a 20  SRFI-features). 
0f00: 20 20 20 20 20 20 20 72 36 72 73 29 29 29 0a 20         r6rs))). 
0f10: 20 0a 29 0a                                       .).