home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / scheme / pcscheme / geneva / sources.exe / SOURCES / S / NEWIO.SW < prev    next >
LaTeX Document  |  1993-10-24  |  17.8 KB

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: LaTeX Document (document/latex).

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert LaTeX Document (document/latex) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file LaTeX document text default
99% file LaTeX document, ASCII text, with CRLF line terminators default
100% TrID LaTeX 2e document (with rem) default
100% checkBytes Printable ASCII default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/281 LaTeX (Subdocument) default
100% detectItEasy Format: plain text[CRLF] default (weak)



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 25 2a 20 4e 45 57 49 4f | 2e 53 0d 0a 25 2a 2a 2a |%* NEWIO|.S..%***|
|00000010| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000020| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000030| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000040| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000050| 2a 2a 2a 2a 2a 0d 0a 25 | 2a 09 09 09 09 09 09 09 |*****..%|*.......|
|00000060| 09 09 2a 0d 0a 25 2a 09 | 09 50 43 20 53 63 68 65 |..*..%*.|.PC Sche|
|00000070| 6d 65 2f 47 65 6e 65 76 | 61 20 34 2e 30 30 20 53 |me/Genev|a 4.00 S|
|00000080| 63 68 65 6d 65 2d 57 45 | 42 20 63 6f 64 65 09 09 |cheme-WE|B code..|
|00000090| 09 2a 0d 0a 25 2a 09 09 | 09 09 09 09 09 09 09 2a |.*..%*..|.......*|
|000000a0| 0d 0a 25 2a 20 28 63 29 | 20 31 39 38 35 2d 31 39 |..%* (c)| 1985-19|
|000000b0| 38 38 20 62 79 20 54 65 | 78 61 73 20 49 6e 73 74 |88 by Te|xas Inst|
|000000c0| 72 75 6d 65 6e 74 73 2c | 20 49 6e 63 2e 20 53 65 |ruments,| Inc. Se|
|000000d0| 65 20 43 4f 50 59 52 49 | 47 48 54 2e 54 58 54 09 |e COPYRI|GHT.TXT.|
|000000e0| 09 2a 0d 0a 25 2a 20 28 | 63 29 20 31 39 39 32 20 |.*..%* (|c) 1992 |
|000000f0| 62 79 20 4c 2e 20 42 61 | 72 74 68 6f 6c 64 69 20 |by L. Ba|rtholdi |
|00000100| 26 20 4d 2e 20 56 75 69 | 6c 6c 65 75 6d 69 65 72 |& M. Vui|lleumier|
|00000110| 2c 20 55 6e 69 76 65 72 | 73 69 74 79 20 6f 66 20 |, Univer|sity of |
|00000120| 47 65 6e 65 76 61 09 2a | 0d 0a 25 2a 09 09 09 09 |Geneva.*|..%*....|
|00000130| 09 09 09 09 09 2a 0d 0a | 25 2a 2d 2d 2d 2d 2d 2d |.....*..|%*------|
|00000140| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000150| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000160| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000170| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000180| 2a 0d 0a 25 2a 09 09 09 | 09 09 09 09 09 09 2a 0d |*..%*...|......*.|
|00000190| 0a 25 2a 09 09 09 49 2f | 4f 20 77 72 69 74 74 65 |.%*...I/|O writte|
|000001a0| 6e 20 69 6e 20 53 63 68 | 65 6d 65 09 09 09 09 2a |n in Sch|eme....*|
|000001b0| 0d 0a 25 2a 09 09 09 09 | 09 09 09 09 09 2a 0d 0a |..%*....|.....*..|
|000001c0| 25 2a 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |%*------|--------|
|000001d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000001e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000001f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000200| 2d 2d 2d 2d 2d 2d 2d 2d | 2a 0d 0a 25 2a 09 09 09 |--------|*..%*...|
|00000210| 09 09 09 09 09 09 2a 0d | 0a 25 2a 20 43 72 65 61 |......*.|.%* Crea|
|00000220| 74 65 64 20 62 79 3a 20 | 4c 61 72 72 79 20 42 61 |ted by: |Larry Ba|
|00000230| 72 74 68 6f 6c 64 69 09 | 09 44 61 74 65 3a 20 31 |rtholdi.|.Date: 1|
|00000240| 39 38 35 09 09 09 2a 0d | 0a 25 2a 20 52 65 76 69 |985...*.|.%* Revi|
|00000250| 73 69 6f 6e 20 68 69 73 | 74 6f 72 79 3a 09 09 09 |sion his|tory:...|
|00000260| 09 09 09 09 2a 0d 0a 25 | 2a 20 2d 20 31 38 20 4a |....*..%|* - 18 J|
|00000270| 75 6e 20 39 32 3a 09 52 | 65 6e 61 69 73 73 61 6e |un 92:.R|enaissan|
|00000280| 63 65 20 28 42 6f 72 6c | 61 6e 64 20 43 6f 6d 70 |ce (Borl|and Comp|
|00000290| 69 6c 65 72 73 2c 20 2e | 2e 2e 29 09 09 09 2a 0d |ilers, .|..)...*.|
|000002a0| 0a 25 2a 09 09 09 09 09 | 09 09 09 09 2a 0d 0a 25 |.%*.....|....*..%|
|000002b0| 2a 09 09 09 09 09 60 60 | 49 6e 20 6e 6f 6d 69 6e |*.....``|In nomin|
|000002c0| 65 20 6f 6d 6e 69 70 6f | 74 65 6e 74 69 69 20 64 |e omnipo|tentii d|
|000002d0| 65 69 27 27 09 2a 0d 0a | 25 2a 2a 2a 2a 2a 2a 2a |ei''.*..|%*******|
|000002e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000002f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000300| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000310| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000320| 2a 0d 0a 0d 0a 5c 64 6f | 63 75 6d 65 6e 74 73 74 |*....\do|cumentst|
|00000330| 79 6c 65 5b 61 34 2c 61 | 73 74 79 70 65 64 5d 7b |yle[a4,a|styped]{|
|00000340| 61 72 74 69 63 6c 65 7d | 0d 0a 5c 73 65 74 6c 65 |article}|..\setle|
|00000350| 6e 67 74 68 7b 5c 6f 64 | 64 73 69 64 65 6d 61 72 |ngth{\od|dsidemar|
|00000360| 67 69 6e 7d 7b 30 63 6d | 7d 0d 0a 5c 73 65 74 6c |gin}{0cm|}..\setl|
|00000370| 65 6e 67 74 68 7b 5c 65 | 76 65 6e 73 69 64 65 6d |ength{\e|vensidem|
|00000380| 61 72 67 69 6e 7d 7b 30 | 63 6d 7d 0d 0a 5c 73 65 |argin}{0|cm}..\se|
|00000390| 74 6c 65 6e 67 74 68 7b | 5c 74 6f 70 6d 61 72 67 |tlength{|\topmarg|
|000003a0| 69 6e 7d 7b 30 63 6d 7d | 0d 0a 5c 73 65 74 6c 65 |in}{0cm}|..\setle|
|000003b0| 6e 67 74 68 7b 5c 74 65 | 78 74 68 65 69 67 68 74 |ngth{\te|xtheight|
|000003c0| 7d 7b 32 32 63 6d 7d 0d | 0a 5c 73 65 74 6c 65 6e |}{22cm}.|.\setlen|
|000003d0| 67 74 68 7b 5c 74 65 78 | 74 77 69 64 74 68 7d 7b |gth{\tex|twidth}{|
|000003e0| 31 36 63 6d 7d 0d 0a 5c | 6e 65 77 63 6f 6d 6d 61 |16cm}..\|newcomma|
|000003f0| 6e 64 7b 5c 73 63 68 65 | 6d 65 7d 7b 7b 5c 73 63 |nd{\sche|me}{{\sc|
|00000400| 20 47 65 53 63 68 65 6d | 65 7d 7d 0d 0a 0d 0a 5c | GeSchem|e}}....\|
|00000410| 74 69 74 6c 65 7b 4e 65 | 77 20 49 6e 70 75 74 2f |title{Ne|w Input/|
|00000420| 4f 75 74 70 75 74 20 52 | 6f 75 74 69 6e 65 73 20 |Output R|outines |
|00000430| 69 6e 20 5c 73 63 68 65 | 6d 65 7d 0d 0a 5c 61 75 |in \sche|me}..\au|
|00000440| 74 68 6f 72 7b 4c 61 72 | 72 79 20 42 61 72 74 68 |thor{Lar|ry Barth|
|00000450| 6f 6c 64 69 7d 0d 0a 5c | 64 61 74 65 7b 5c 74 6f |oldi}..\|date{\to|
|00000460| 64 61 79 7d 0d 0a 0d 0a | 5c 62 65 67 69 6e 7b 64 |day}....|\begin{d|
|00000470| 6f 63 75 6d 65 6e 74 7d | 0d 0a 5c 6d 61 6b 65 74 |ocument}|..\maket|
|00000480| 69 74 6c 65 0d 0a 0d 0a | 5c 62 65 67 69 6e 7b 61 |itle....|\begin{a|
|00000490| 62 73 74 72 61 63 74 7d | 0d 0a 57 65 20 64 65 73 |bstract}|..We des|
|000004a0| 63 72 69 62 65 20 49 6e | 70 75 74 2f 4f 75 74 70 |cribe In|put/Outp|
|000004b0| 75 74 20 72 6f 75 74 69 | 6e 65 73 20 77 72 69 74 |ut routi|nes writ|
|000004c0| 74 65 6e 20 69 6e 20 53 | 63 68 65 6d 65 2e 20 50 |ten in S|cheme. P|
|000004d0| 72 6f 67 72 61 6d 6d 69 | 6e 67 0d 0a 49 2f 4f 20 |rogrammi|ng..I/O |
|000004e0| 69 6e 20 61 20 68 69 67 | 68 2d 6c 65 76 65 6c 20 |in a hig|h-level |
|000004f0| 6c 61 6e 67 75 61 67 65 | 20 68 61 73 20 74 68 65 |language| has the|
|00000500| 20 61 64 76 61 6e 74 61 | 67 65 20 6f 66 20 73 70 | advanta|ge of sp|
|00000510| 65 65 64 79 0d 0a 64 65 | 76 65 6c 6f 70 6d 65 6e |eedy..de|velopmen|
|00000520| 74 2c 20 68 69 67 68 20 | 70 6f 72 74 61 62 6c 69 |t, high |portabli|
|00000530| 6c 69 74 79 20 61 6e 64 | 20 73 61 66 65 74 79 2c |lity and| safety,|
|00000540| 20 61 73 20 77 65 6c 6c | 20 61 73 20 62 65 69 6e | as well| as bein|
|00000550| 67 20 75 73 65 66 75 6c | 0d 0a 66 6f 72 20 68 61 |g useful|..for ha|
|00000560| 6d 6d 65 72 69 6e 67 20 | 75 70 20 61 20 66 69 6e |mmering |up a fin|
|00000570| 61 6c 20 6c 6f 77 65 72 | 2d 6c 65 76 65 6c 20 76 |al lower|-level v|
|00000580| 65 72 73 69 6f 6e 2e 20 | 4e 6f 6e 65 74 68 65 6c |ersion. |Nonethel|
|00000590| 65 73 73 2c 20 70 65 72 | 66 6f 72 6d 61 6e 63 65 |ess, per|formance|
|000005a0| 0d 0a 6f 66 20 74 68 65 | 20 53 63 68 65 6d 65 20 |..of the| Scheme |
|000005b0| 72 6f 75 74 69 6e 65 73 | 20 69 73 20 73 68 6f 77 |routines| is show|
|000005c0| 6e 20 74 6f 20 62 65 20 | 61 63 63 65 70 74 61 62 |n to be |acceptab|
|000005d0| 6c 65 2e 0d 0a 5c 65 6e | 64 7b 61 62 73 74 72 61 |le...\en|d{abstra|
|000005e0| 63 74 7d 0d 0a 0d 0a 5c | 73 65 63 74 69 6f 6e 7b |ct}....\|section{|
|000005f0| 49 6e 74 72 6f 64 75 63 | 74 69 6f 6e 7d 0d 0a 54 |Introduc|tion}..T|
|00000600| 68 69 73 20 6d 6f 64 75 | 6c 65 20 63 6f 6e 74 61 |his modu|le conta|
|00000610| 69 6e 73 20 64 65 66 69 | 6e 69 74 69 6f 6e 73 20 |ins defi|nitions |
|00000620| 66 6f 72 20 75 73 65 72 | 2d 6c 65 76 65 6c 20 73 |for user|-level s|
|00000630| 63 68 65 6d 65 20 69 6e | 70 75 74 2f 6f 75 74 70 |cheme in|put/outp|
|00000640| 75 74 0d 0a 72 6f 75 74 | 69 6e 65 73 2e 20 54 68 |ut..rout|ines. Th|
|00000650| 65 20 66 69 72 73 74 20 | 76 65 72 73 69 6f 6e 73 |e first |versions|
|00000660| 20 6f 66 20 5c 73 63 68 | 65 6d 65 5c 20 28 69 6e | of \sch|eme\ (in|
|00000670| 20 69 74 73 20 67 6f 6c | 64 65 6e 20 54 65 78 61 | its gol|den Texa|
|00000680| 73 20 64 61 79 73 29 0d | 0a 63 6f 6e 74 61 69 6e |s days).|.contain|
|00000690| 65 64 20 49 2f 4f 20 72 | 6f 75 74 69 6e 65 73 20 |ed I/O r|outines |
|000006a0| 77 72 69 74 74 65 6e 20 | 69 6e 20 53 63 68 65 6d |written |in Schem|
|000006b0| 65 20 61 6e 64 20 69 6e | 20 43 2e 20 46 6f 72 20 |e and in| C. For |
|000006c0| 65 66 66 69 63 69 65 6e | 63 79 20 61 6e 64 0d 0a |efficien|cy and..|
|000006d0| 6a 6f 62 20 73 65 63 75 | 72 69 74 79 20 70 75 72 |job secu|rity pur|
|000006e0| 70 6f 73 65 73 2c 20 74 | 68 65 20 62 65 74 74 65 |poses, t|he bette|
|000006f0| 72 20 6f 66 20 74 68 69 | 73 20 63 6f 64 65 20 68 |r of thi|s code h|
|00000700| 61 73 20 62 65 65 6e 20 | 74 72 61 6e 73 6c 61 74 |as been |translat|
|00000710| 65 64 0d 0a 74 6f 20 61 | 73 73 65 6d 62 6c 79 20 |ed..to a|ssembly |
|00000720| 6c 61 6e 67 75 61 67 65 | 2e 0d 0a 0d 0a 4e 6f 77 |language|.....Now|
|00000730| 20 74 68 61 74 20 70 6f | 72 74 61 62 69 6c 69 74 | that po|rtabilit|
|00000740| 79 20 61 6e 64 20 73 74 | 61 62 69 6c 69 74 79 20 |y and st|ability |
|00000750| 68 61 76 65 20 6f 75 74 | 77 65 69 67 68 74 65 64 |have out|weighted|
|00000760| 20 74 68 65 20 63 6c 6f | 63 6b 2d 63 79 63 6c 65 | the clo|ck-cycle|
|00000770| 0d 0a 63 6f 75 6e 74 69 | 6e 67 20 68 61 62 69 74 |..counti|ng habit|
|00000780| 73 20 77 65 20 61 6c 6c | 20 68 61 64 20 73 6f 6d |s we all| had som|
|00000790| 65 20 74 69 6d 65 20 61 | 67 6f 2c 20 69 74 20 62 |e time a|go, it b|
|000007a0| 65 63 61 6d 65 20 6a 75 | 73 74 69 66 69 65 64 20 |ecame ju|stified |
|000007b0| 74 6f 0d 0a 64 65 76 65 | 6c 6f 70 2c 20 61 74 20 |to..deve|lop, at |
|000007c0| 6c 65 61 73 74 20 66 6f | 72 20 70 72 6f 74 6f 74 |least fo|r protot|
|000007d0| 79 70 69 6e 67 20 72 65 | 61 73 6f 6e 73 2c 20 61 |yping re|asons, a|
|000007e0| 20 70 75 72 65 6c 79 20 | 53 63 68 65 6d 65 2d 62 | purely |Scheme-b|
|000007f0| 61 73 65 64 20 49 2f 4f | 0d 0a 6c 69 62 72 61 72 |ased I/O|..librar|
|00000800| 79 2e 20 4f 6e 6c 79 20 | 74 68 65 6e 2c 20 77 69 |y. Only |then, wi|
|00000810| 74 68 20 66 75 6c 6c 20 | 6b 6e 6f 77 6c 65 64 67 |th full |knowledg|
|00000820| 65 20 6f 66 20 74 68 65 | 20 70 72 6f 73 20 61 6e |e of the| pros an|
|00000830| 64 20 63 6f 6e 73 20 6f | 66 20 64 69 66 66 65 72 |d cons o|f differ|
|00000840| 65 6e 74 0d 0a 61 70 70 | 72 6f 61 63 68 65 73 2c |ent..app|roaches,|
|00000850| 20 63 6f 75 6c 64 20 69 | 74 20 62 65 20 64 65 63 | could i|t be dec|
|00000860| 69 64 65 64 20 74 6f 20 | 74 72 61 6e 73 6c 61 74 |ided to |translat|
|00000870| 65 20 7b 5c 65 6d 20 6d | 69 6e 6f 72 7d 20 70 61 |e {\em m|inor} pa|
|00000880| 72 74 73 20 6f 66 20 74 | 68 65 0d 0a 63 6f 64 65 |rts of t|he..code|
|00000890| 20 74 6f 20 61 6e 6f 74 | 68 65 72 20 6d 6f 72 65 | to anot|her more|
|000008a0| 20 65 66 66 69 63 69 65 | 6e 74 20 6c 61 6e 67 75 | efficie|nt langu|
|000008b0| 61 67 65 2e 0d 0a 0d 0a | 7c 52 65 61 64 7c 20 68 |age.....||Read| h|
|000008c0| 61 73 20 74 72 61 64 69 | 74 69 6f 6e 61 6c 6c 79 |as tradi|tionally|
|000008d0| 20 61 6c 77 61 79 73 20 | 62 65 65 6e 20 70 72 6f | always |been pro|
|000008e0| 67 72 61 6d 6d 65 64 20 | 69 6e 20 53 63 68 65 6d |grammed |in Schem|
|000008f0| 65 2e 20 49 74 20 72 65 | 74 75 72 6e 73 0d 0a 74 |e. It re|turns..t|
|00000900| 68 65 20 6e 65 78 74 20 | 69 74 65 6d 20 61 76 61 |he next |item ava|
|00000910| 69 6c 61 62 6c 65 20 69 | 6e 20 74 68 65 20 69 6e |ilable i|n the in|
|00000920| 70 75 74 2c 20 62 65 20 | 69 74 20 61 6e 20 61 74 |put, be |it an at|
|00000930| 6f 6d 20 6f 72 20 61 20 | 6c 69 73 74 20 28 6d 61 |om or a |list (ma|
|00000940| 79 62 65 0d 0a 69 74 73 | 65 6c 66 20 63 6f 6e 74 |ybe..its|elf cont|
|00000950| 61 69 6e 69 6e 67 20 6c | 69 73 74 73 29 2e 20 49 |aining l|ists). I|
|00000960| 74 20 63 61 6c 6c 73 20 | 7c 52 65 61 64 2d 61 74 |t calls ||Read-at|
|00000970| 6f 6d 7c 20 74 68 61 74 | 20 72 65 74 75 72 6e 73 |om| that| returns|
|00000980| 20 74 68 65 0d 0a 6e 65 | 78 74 20 61 74 6f 6d 20 | the..ne|xt atom |
|00000990| 69 6e 20 74 68 65 20 69 | 6e 70 75 74 20 69 66 20 |in the i|nput if |
|000009a0| 61 20 76 61 6c 69 64 20 | 61 74 6f 6d 20 68 61 73 |a valid |atom has|
|000009b0| 20 62 65 65 6e 20 65 6e | 74 65 72 65 64 3b 0d 0a | been en|tered;..|
|000009c0| 6f 72 20 61 20 73 69 6e | 67 6c 65 74 6f 6e 20 6c |or a sin|gleton l|
|000009d0| 69 73 74 20 63 6f 6e 74 | 61 69 6e 69 6e 67 20 74 |ist cont|aining t|
|000009e0| 68 65 20 73 70 65 63 69 | 61 6c 20 73 79 6e 74 61 |he speci|al synta|
|000009f0| 63 74 69 63 0d 0a 65 6c | 65 6d 65 6e 74 20 65 6e |ctic..el|ement en|
|00000a00| 74 65 72 65 64 20 69 6e | 20 63 61 73 65 20 6f 66 |tered in| case of|
|00000a10| 20 60 7c 2e 7c 27 2c 20 | 60 7c 27 7c 27 2c 20 65 | `|.|', |`|'|', e|
|00000a20| 74 63 2e 0d 0a 0d 0a 4f | 75 74 70 75 74 20 69 73 |tc.....O|utput is|
|00000a30| 20 62 61 73 69 63 61 6c | 6c 79 20 6d 61 64 65 20 | basical|ly made |
|00000a40| 6f 66 20 74 77 6f 20 72 | 6f 75 74 69 6e 65 73 3a |of two r|outines:|
|00000a50| 20 7c 77 72 69 74 65 7c | 20 61 6e 64 20 7c 64 69 | |write|| and |di|
|00000a60| 73 70 6c 61 79 7c 2e 0d | 0a 7c 57 72 69 74 65 7c |splay|..|.|Write||
|00000a70| 20 69 73 20 69 6e 74 65 | 6e 64 65 64 20 74 6f 20 | is inte|nded to |
|00000a80| 68 75 6d 61 6e 20 69 6e | 74 65 72 61 63 74 69 6f |human in|teractio|
|00000a90| 6e 20 61 6e 64 20 77 69 | 6c 6c 20 74 68 75 73 20 |n and wi|ll thus |
|00000aa0| 70 72 6f 64 75 63 65 20 | 74 68 65 0d 0a 6d 6f 73 |produce |the..mos|
|00000ab0| 74 20 63 6f 6d 70 61 63 | 74 20 61 6e 64 20 65 6c |t compac|t and el|
|00000ac0| 65 67 61 6e 74 20 72 65 | 70 72 65 73 65 6e 74 61 |egant re|presenta|
|00000ad0| 74 69 6f 6e 20 6f 66 20 | 61 6e 20 69 74 65 6d 3b |tion of |an item;|
|00000ae0| 20 61 20 72 65 70 72 65 | 73 65 6e 74 61 74 69 6f | a repre|sentatio|
|00000af0| 6e 0d 0a 74 68 61 74 20 | 63 61 72 72 69 65 73 20 |n..that |carries |
|00000b00| 6d 65 61 6e 69 6e 67 20 | 64 69 72 65 63 74 65 64 |meaning |directed|
|00000b10| 20 74 6f 77 61 72 64 73 | 20 68 75 6d 61 6e 20 69 | towards| human i|
|00000b20| 6e 74 65 6c 6c 65 63 74 | 2c 20 77 69 74 68 20 74 |ntellect|, with t|
|00000b30| 68 65 0d 0a 6d 69 6e 69 | 6d 75 6d 20 73 79 6e 74 |he..mini|mum synt|
|00000b40| 61 63 74 69 63 20 66 72 | 6f 73 74 69 6e 67 2e 0d |actic fr|osting..|
|00000b50| 0a 7c 44 69 73 70 6c 61 | 79 7c 2c 20 6f 6e 20 74 |.|Displa|y|, on t|
|00000b60| 68 65 20 63 6f 6e 74 72 | 61 72 79 2c 20 69 73 20 |he contr|ary, is |
|00000b70| 72 65 71 75 69 72 65 64 | 20 74 6f 20 70 72 6f 64 |required| to prod|
|00000b80| 75 63 65 20 61 6e 20 41 | 53 43 49 49 20 72 65 70 |uce an A|SCII rep|
|00000b90| 72 65 73 65 6e 74 61 74 | 69 6f 6e 0d 0a 6f 66 20 |resentat|ion..of |
|00000ba0| 61 6e 20 69 74 65 6d 20 | 73 75 63 68 20 74 68 61 |an item |such tha|
|00000bb0| 74 20 69 74 20 63 61 6e | 20 62 65 20 72 65 2d 72 |t it can| be re-r|
|00000bc0| 65 61 64 20 62 79 20 7c | 52 65 61 64 7c 2e 0d 0a |ead by ||Read|...|
|00000bd0| 0d 0a 42 65 73 69 64 65 | 73 20 74 68 65 73 65 20 |..Beside|s these |
|00000be0| 68 69 67 68 2d 63 6c 61 | 73 73 20 72 6f 75 74 69 |high-cla|ss routi|
|00000bf0| 6e 65 73 2c 20 74 68 65 | 20 6c 69 62 72 61 72 79 |nes, the| library|
|00000c00| 20 69 6e 63 6c 75 64 65 | 73 20 7c 72 65 61 64 2d | include|s |read-|
|00000c10| 6c 69 6e 65 7c 20 74 68 | 61 74 0d 0a 72 65 61 64 |line| th|at..read|
|00000c20| 73 20 61 20 66 75 6c 6c | 20 6c 69 6e 65 20 66 72 |s a full| line fr|
|00000c30| 6f 6d 20 74 68 65 20 69 | 6e 70 75 74 2c 20 7c 70 |om the i|nput, |p|
|00000c40| 65 65 6b 2d 63 68 61 72 | 7c 20 74 68 61 74 20 72 |eek-char|| that r|
|00000c50| 65 74 75 72 6e 73 20 74 | 68 65 20 6e 65 78 74 0d |eturns t|he next.|
|00000c60| 0a 63 68 61 72 61 63 74 | 65 72 20 77 69 74 68 6f |.charact|er witho|
|00000c70| 75 74 20 72 65 6d 6f 76 | 69 6e 67 20 69 74 20 66 |ut remov|ing it f|
|00000c80| 72 6f 6d 20 74 68 65 20 | 62 75 66 66 65 72 20 28 |rom the |buffer (|
|00000c90| 6f 66 20 7c 23 46 7c 20 | 69 66 20 6e 6f 20 63 61 |of |#F| |if no ca|
|00000ca0| 72 61 63 74 65 72 20 69 | 73 0d 0a 61 76 61 69 6c |racter i|s..avail|
|00000cb0| 61 62 6c 65 29 2c 20 7c | 75 6e 72 65 61 64 2d 63 |able), ||unread-c|
|00000cc0| 68 61 72 7c 20 74 68 61 | 74 20 72 65 69 6e 73 65 |har| tha|t reinse|
|00000cd0| 72 74 73 20 74 68 65 20 | 63 68 61 72 61 63 74 65 |rts the |characte|
|00000ce0| 72 20 6a 75 73 74 20 72 | 65 61 64 20 69 6e 74 6f |r just r|ead into|
|00000cf0| 0d 0a 74 68 65 20 62 75 | 66 66 65 72 2c 20 61 6e |..the bu|ffer, an|
|00000d00| 64 20 73 6f 20 6f 6e 2e | 20 54 68 65 73 65 20 70 |d so on.| These p|
|00000d10| 72 6f 63 65 64 75 72 65 | 73 20 61 72 65 20 6e 6f |rocedure|s are no|
|00000d20| 74 20 77 65 6c 6c 2d 6c | 69 6b 65 64 20 62 65 63 |t well-l|iked bec|
|00000d30| 61 75 73 65 20 74 68 65 | 79 0d 0a 69 6d 70 6c 79 |ause the|y..imply|
|00000d40| 20 74 68 65 20 70 72 6f | 67 72 61 6d 6d 65 72 20 | the pro|grammer |
|00000d50| 69 73 20 6e 6f 74 20 75 | 73 69 6e 67 20 74 68 65 |is not u|sing the|
|00000d60| 20 66 75 6c 6c 20 66 65 | 61 74 75 72 65 73 20 6f | full fe|atures o|
|00000d70| 66 20 61 6e 20 69 6e 74 | 65 72 70 72 65 74 65 64 |f an int|erpreted|
|00000d80| 0d 0a 6c 61 6e 67 75 61 | 67 65 20 77 69 74 68 20 |..langua|ge with |
|00000d90| 61 20 70 6f 77 65 72 66 | 75 6c 20 63 6f 6d 6d 61 |a powerf|ul comma|
|00000da0| 6e 64 2d 6c 69 6e 65 20 | 73 68 65 6c 6c 2e 0d 0a |nd-line |shell...|
|00000db0| 0d 0a 5c 73 65 63 74 69 | 6f 6e 7b 48 65 61 64 65 |..\secti|on{Heade|
|00000dc0| 72 7d 0d 0a 54 68 65 20 | 70 75 72 70 6f 73 65 20 |r}..The |purpose |
|00000dd0| 6f 66 20 74 68 65 20 68 | 65 61 64 65 72 20 69 73 |of the h|eader is|
|00000de0| 20 74 6f 20 63 72 65 61 | 74 65 20 61 6e 20 65 6e | to crea|te an en|
|00000df0| 76 69 72 6f 6e 6d 65 6e | 74 20 74 68 61 74 20 77 |vironmen|t that w|
|00000e00| 69 6c 6c 20 63 6f 6e 74 | 61 69 6e 20 74 68 65 0d |ill cont|ain the.|
|00000e10| 0a 6e 65 77 20 62 69 6e | 64 69 6e 67 73 2e 20 54 |.new bin|dings. T|
|00000e20| 68 65 20 65 78 61 63 74 | 20 63 6f 64 65 20 77 69 |he exact| code wi|
|00000e30| 6c 6c 20 62 65 20 73 65 | 74 20 6c 61 74 65 72 20 |ll be se|t later |
|00000e40| 6f 6e 2c 20 69 6e 73 69 | 64 65 20 61 20 7c 6c 65 |on, insi|de a |le|
|00000e50| 74 7c 2c 20 73 6f 20 74 | 68 61 74 0d 0a 6c 6f 63 |t|, so t|hat..loc|
|00000e60| 61 6c 20 6f 62 6a 65 63 | 74 73 20 63 6f 6d 6d 6f |al objec|ts commo|
|00000e70| 6e 20 74 6f 20 61 6c 6c | 20 72 6f 75 74 69 6e 65 |n to all| routine|
|00000e80| 73 20 63 61 6e 20 62 65 | 20 64 65 66 69 6e 65 64 |s can be| defined|
|00000e90| 2e 0d 0a 0d 0a 28 62 65 | 67 69 6e 0d 0a 20 20 28 |.....(be|gin.. (|
|00000ea0| 64 65 66 69 6e 65 20 40 | 77 72 69 74 65 29 0d 0a |define @|write)..|
|00000eb0| 20 20 28 64 65 66 69 6e | 65 20 40 64 69 73 70 6c | (defin|e @displ|
|00000ec0| 61 79 29 0d 0a 20 20 28 | 64 65 66 69 6e 65 20 40 |ay).. (|define @|
|00000ed0| 6e 65 77 6c 69 6e 65 29 | 0d 0a 20 20 28 64 65 66 |newline)|.. (def|
|00000ee0| 69 6e 65 20 40 77 72 69 | 74 65 2d 63 68 61 72 29 |ine @wri|te-char)|
|00000ef0| 0d 0a 0d 0a 20 20 28 64 | 65 66 69 6e 65 20 40 72 |.... (d|efine @r|
|00000f00| 65 61 64 29 0d 0a 20 20 | 28 64 65 66 69 6e 65 20 |ead).. |(define |
|00000f10| 40 72 65 61 64 2d 61 74 | 6f 6d 29 0d 0a 20 20 28 |@read-at|om).. (|
|00000f20| 64 65 66 69 6e 65 20 40 | 65 6f 66 2d 6f 62 6a 65 |define @|eof-obje|
|00000f30| 63 74 3f 29 0d 0a 20 20 | 28 64 65 66 69 6e 65 20 |ct?).. |(define |
|00000f40| 40 63 68 61 72 2d 72 65 | 61 64 79 3f 29 0d 0a 20 |@char-re|ady?).. |
|00000f50| 20 28 64 65 66 69 6e 65 | 20 40 70 65 65 6b 2d 63 | (define| @peek-c|
|00000f60| 68 61 72 29 0d 0a 20 20 | 28 64 65 66 69 6e 65 20 |har).. |(define |
|00000f70| 40 72 65 61 64 2d 63 68 | 61 72 29 0d 0a 20 20 28 |@read-ch|ar).. (|
|00000f80| 64 65 66 69 6e 65 20 40 | 72 65 61 64 2d 6c 69 6e |define @|read-lin|
|00000f90| 65 29 0d 0a 20 20 28 64 | 65 66 69 6e 65 20 40 75 |e).. (d|efine @u|
|00000fa0| 6e 72 65 61 64 2d 63 68 | 61 72 29 0d 0a 0d 0a 20 |nread-ch|ar).... |
|00000fb0| 20 28 64 65 66 69 6e 65 | 20 40 6e 75 6d 62 65 72 | (define| @number|
|00000fc0| 2d 3e 73 74 72 69 6e 67 | 29 0d 0a 20 20 28 64 65 |->string|).. (de|
|00000fd0| 66 69 6e 65 20 40 69 6e | 74 65 67 65 72 2d 3e 73 |fine @in|teger->s|
|00000fe0| 74 72 69 6e 67 29 0d 0a | 29 0d 0a 0d 0a 5c 73 65 |tring)..|)....\se|
|00000ff0| 63 74 69 6f 6e 7b 48 65 | 6c 70 65 72 73 7d 0d 0a |ction{He|lpers}..|
|00001000| 41 6d 6f 6e 67 20 74 68 | 65 20 72 6f 75 74 69 6e |Among th|e routin|
|00001010| 65 73 20 63 6f 64 65 64 | 20 69 6e 20 6c 6f 77 2d |es coded| in low-|
|00001020| 6c 65 76 65 6c 20 28 69 | 6e 73 69 64 65 20 74 68 |level (i|nside th|
|00001030| 65 20 6d 69 63 72 6f 63 | 6f 64 65 29 20 61 72 65 |e microc|ode) are|
|00001040| 0d 0a 63 68 61 72 61 63 | 74 65 72 20 69 6e 70 75 |..charac|ter inpu|
|00001050| 74 20 61 6e 64 20 6f 75 | 74 70 75 74 2c 20 73 74 |t and ou|tput, st|
|00001060| 72 69 6e 67 20 6f 75 74 | 70 75 74 20 61 6e 64 20 |ring out|put and |
|00001070| 61 20 6c 69 6e 6b 61 67 | 65 20 74 6f 20 74 68 65 |a linkag|e to the|
|00001080| 0d 0a 43 20 66 6f 72 6d | 61 74 74 69 6e 67 20 66 |..C form|atting f|
|00001090| 75 6e 63 74 69 6f 6e 73 | 20 7c 73 70 72 69 6e 74 |unctions| |sprint|
|000010a0| 66 7c 20 61 6e 64 20 7c | 73 73 63 61 6e 66 7c 5c |f| and ||sscanf|\|
|000010b0| 66 6f 6f 74 6e 6f 74 65 | 7b 43 6f 6e 73 75 6c 74 |footnote|{Consult|
|000010c0| 0d 0a 79 6f 75 72 20 6c | 6f 63 61 6c 20 67 75 72 |..your l|ocal gur|
|000010d0| 75 20 6f 6e 20 7c 5c 25 | 65 73 63 61 70 65 7c 20 |u on |\%|escape| |
|000010e0| 69 6e 74 65 72 66 61 63 | 69 6e 67 7d 2e 0d 0a 0d |interfac|ing}....|
|000010f0| 0a 28 64 65 66 69 6e 65 | 20 28 73 70 72 69 6e 74 |.(define| (sprint|
|00001100| 66 20 2e 20 61 72 67 73 | 29 0d 0a 20 20 28 25 65 |f . args|).. (%e|
|00001110| 78 65 63 75 74 65 20 28 | 63 6f 6d 70 69 6c 65 20 |xecute (|compile |
|00001120| 60 28 25 65 73 63 20 33 | 39 20 2c 40 61 72 67 73 |`(%esc 3|9 ,@args|
|00001130| 29 29 29 29 0d 0a 0d 0a | 28 64 65 66 69 6e 65 20 |))))....|(define |
|00001140| 28 73 73 63 61 6e 66 20 | 73 74 72 69 6e 67 20 74 |(sscanf |string t|
|00001150| 65 6d 70 6c 61 74 65 29 | 0d 0a 20 20 28 25 65 73 |emplate)|.. (%es|
|00001160| 63 20 34 30 20 73 74 72 | 69 6e 67 20 74 65 6d 70 |c 40 str|ing temp|
|00001170| 6c 61 74 65 29 29 0d 0a | 0d 0a 28 64 65 66 69 6e |late))..|..(defin|
|00001180| 65 20 25 70 75 74 63 68 | 61 72 20 64 69 73 70 6c |e %putch|ar displ|
|00001190| 61 79 29 0d 0a 28 64 65 | 66 69 6e 65 20 25 70 75 |ay)..(de|fine %pu|
|000011a0| 74 73 74 72 69 6e 67 20 | 64 69 73 70 6c 61 79 29 |tstring |display)|
|000011b0| 0d 0a 0d 0a 5c 73 65 63 | 74 69 6f 6e 7b 54 68 65 |....\sec|tion{The|
|000011c0| 20 62 75 6c 6b 20 6f 66 | 20 69 74 7d 0d 0a 54 68 | bulk of| it}..Th|
|000011d0| 69 73 20 68 75 67 65 20 | 7c 6c 65 74 72 65 63 7c |is huge ||letrec||
|000011e0| 20 63 6f 6e 74 61 69 6e | 73 20 61 20 66 65 77 20 | contain|s a few |
|000011f0| 70 72 6f 63 65 64 75 72 | 65 73 20 6f 66 20 67 6c |procedur|es of gl|
|00001200| 6f 62 61 6c 20 69 6e 74 | 65 72 65 73 74 2c 0d 0a |obal int|erest,..|
|00001210| 61 6e 64 20 63 6f 64 65 | 20 66 6f 72 20 65 61 63 |and code| for eac|
|00001220| 68 20 6f 66 20 74 68 65 | 20 69 6e 74 65 72 66 61 |h of the| interfa|
|00001230| 63 65 20 72 6f 75 74 69 | 6e 65 73 20 64 65 73 63 |ce routi|nes desc|
|00001240| 72 69 62 65 64 20 61 62 | 6f 76 65 2e 0d 0a 0d 0a |ribed ab|ove.....|
|00001250| 7c 51 75 6f 74 69 66 79 | 7c 20 73 75 72 72 6f 75 ||Quotify|| surrou|
|00001260| 6e 64 73 20 69 74 73 20 | 73 74 72 69 6e 67 20 61 |nds its |string a|
|00001270| 72 67 75 6d 65 6e 74 20 | 77 69 74 68 20 74 68 65 |rgument |with the|
|00001280| 20 73 65 70 61 72 61 74 | 6f 72 20 28 61 20 63 68 | separat|or (a ch|
|00001290| 61 72 61 63 74 65 72 29 | 2c 0d 0a 72 65 70 6c 61 |aracter)|,..repla|
|000012a0| 63 69 6e 67 20 61 6c 6c | 20 6f 63 63 75 72 65 6e |cing all| occuren|
|000012b0| 63 65 73 20 6f 66 20 60 | 7c 5c 7c 27 20 62 79 20 |ces of `||\|' by |
|000012c0| 60 7c 5c 5c 7c 27 20 61 | 6e 64 20 61 6c 6c 20 6f |`|\\|' a|nd all o|
|000012d0| 63 63 75 72 65 6e 63 65 | 73 20 6f 66 20 74 68 65 |ccurence|s of the|
|000012e0| 0d 0a 73 65 70 61 72 61 | 74 6f 72 20 69 74 73 65 |..separa|tor itse|
|000012f0| 6c 66 20 62 79 20 60 7c | 5c 7c 7b 5c 65 6d 20 73 |lf by `||\|{\em s|
|00001300| 65 70 61 72 61 74 6f 72 | 7d 27 2e 0d 0a 0d 0a 7c |eparator|}'.....||
|00001310| 53 70 65 63 63 68 61 72 | 73 7c 20 69 73 20 61 6e |Specchar|s| is an|
|00001320| 20 61 73 73 6f 63 69 61 | 74 69 6f 6e 20 6c 69 73 | associa|tion lis|
|00001330| 74 20 67 69 76 69 6e 67 | 20 74 68 65 20 70 72 69 |t giving| the pri|
|00001340| 6e 74 65 64 20 72 65 70 | 72 65 73 65 6e 74 61 74 |nted rep|resentat|
|00001350| 69 6f 6e 0d 0a 6f 66 20 | 61 20 66 65 77 20 73 70 |ion..of |a few sp|
|00001360| 65 63 69 61 6c 20 63 68 | 61 72 61 63 74 65 72 73 |ecial ch|aracters|
|00001370| 2e 20 49 74 20 69 73 20 | 75 73 65 64 20 62 79 20 |. It is |used by |
|00001380| 7c 77 72 69 74 65 7c 2e | 0d 0a 0d 0a 7c 53 74 72 ||write|.|....|Str|
|00001390| 61 6e 67 65 3f 7c 20 72 | 65 74 75 72 6e 73 20 77 |ange?| r|eturns w|
|000013a0| 68 65 74 68 65 72 20 69 | 74 73 20 61 72 67 75 6d |hether i|ts argum|
|000013b0| 65 6e 74 20 72 65 71 75 | 69 72 65 73 20 71 75 6f |ent requ|ires quo|
|000013c0| 74 69 66 69 63 61 74 69 | 6f 6e 2e 20 53 74 72 69 |tificati|on. Stri|
|000013d0| 6e 67 73 0d 0a 61 72 65 | 20 61 6c 77 61 79 73 20 |ngs..are| always |
|000013e0| 71 75 6f 74 69 66 69 65 | 64 2c 20 62 75 74 20 61 |quotifie|d, but a|
|000013f0| 74 6f 6d 73 20 77 69 6c | 6c 20 62 65 20 71 75 6f |toms wil|l be quo|
|00001400| 74 69 66 69 65 64 20 6f | 6e 6c 79 20 69 66 20 74 |tified o|nly if t|
|00001410| 68 65 79 20 63 6f 6e 74 | 61 69 6e 0d 0a 77 65 69 |hey cont|ain..wei|
|00001420| 72 64 20 63 68 61 72 61 | 63 74 65 72 73 2c 20 61 |rd chara|cters, a|
|00001430| 72 65 20 60 7c 2e 7c 27 | 2c 20 6f 72 20 67 65 6e |re `|.|'|, or gen|
|00001440| 65 72 61 6c 6c 79 20 73 | 70 65 61 6b 69 6e 67 20 |erally s|peaking |
|00001450| 77 6f 75 6c 64 20 6e 6f | 74 20 65 76 61 6c 75 61 |would no|t evalua|
|00001460| 74 65 0d 0a 74 6f 20 61 | 20 73 79 6d 62 6f 6c 20 |te..to a| symbol |
|00001470| 69 66 20 72 65 2d 72 65 | 61 64 20 75 6e 71 75 6f |if re-re|ad unquo|
|00001480| 74 65 64 2e 0d 0a 0d 0a | 7c 50 75 74 2d 6c 69 73 |ted.....||Put-lis|
|00001490| 74 7c 20 70 72 69 6e 74 | 73 20 74 68 65 20 74 61 |t| print|s the ta|
|000014a0| 69 6c 20 6f 66 20 61 20 | 6c 69 73 74 20 28 74 68 |il of a |list (th|
|000014b0| 65 20 68 65 61 64 69 6e | 67 20 60 7c 28 7c 27 20 |e headin|g `|(|' |
|000014c0| 69 73 20 70 72 69 6e 74 | 65 64 20 62 79 20 74 68 |is print|ed by th|
|000014d0| 65 0d 0a 6d 61 69 6e 20 | 72 6f 75 74 69 6e 65 29 |e..main |routine)|
|000014e0| 2e 20 4e 6f 74 65 20 74 | 68 61 74 20 74 68 69 73 |. Note t|hat this|
|000014f0| 20 63 6f 64 65 20 64 6f | 65 73 20 6e 6f 74 20 63 | code do|es not c|
|00001500| 68 65 63 6b 20 77 68 65 | 74 68 65 72 20 74 68 65 |heck whe|ther the|
|00001510| 20 6c 69 73 74 0d 0a 69 | 73 20 63 69 72 63 75 6c | list..i|s circul|
|00001520| 61 72 2e 0d 0a 0d 0a 7c | 44 65 6c 69 6d 62 79 7c |ar.....||Delimby||
|00001530| 20 69 73 20 75 73 65 64 | 20 66 6f 72 20 69 6e 70 | is used| for inp|
|00001540| 75 74 20 61 6e 64 20 63 | 61 6e 20 62 65 20 75 6e |ut and c|an be un|
|00001550| 64 65 72 73 74 6f 6f 64 | 20 61 73 20 72 65 76 65 |derstood| as reve|
|00001560| 72 73 69 6e 67 20 74 68 | 65 20 61 63 74 69 6f 6e |rsing th|e action|
|00001570| 0d 0a 6f 66 20 61 20 7c | 51 75 6f 74 69 66 79 7c |..of a ||Quotify||
|00001580| 3a 20 69 74 20 72 65 61 | 64 73 20 63 68 61 72 61 |: it rea|ds chara|
|00001590| 63 74 65 72 73 20 75 6e | 74 69 6c 20 69 74 20 72 |cters un|til it r|
|000015a0| 65 61 63 68 65 73 20 61 | 20 73 70 65 63 69 66 69 |eaches a| specifi|
|000015b0| 65 64 20 73 65 70 61 72 | 61 74 6f 72 2e 0d 0a 0d |ed separ|ator....|
|000015c0| 0a 7c 47 65 74 2d 73 79 | 6d 62 6f 6c 7c 20 77 69 |.|Get-sy|mbol| wi|
|000015d0| 6c 6c 20 72 65 74 75 72 | 6e 20 74 68 65 20 6e 65 |ll retur|n the ne|
|000015e0| 78 74 20 73 79 6d 62 6f | 6c 20 66 72 6f 6d 20 74 |xt symbo|l from t|
|000015f0| 68 65 20 69 6e 70 75 74 | 20 28 75 6e 71 75 6f 74 |he input| (unquot|
|00001600| 65 64 3a 0d 0a 73 75 72 | 72 6f 75 6e 64 65 64 20 |ed:..sur|rounded |
|00001610| 6e 65 69 74 68 65 72 20 | 62 79 20 60 5c 76 65 72 |neither |by `\ver|
|00001620| 62 2b 22 2b 27 20 6e 6f | 72 20 62 79 20 60 5c 76 |b+"+' no|r by `\v|
|00001630| 65 72 62 2b 7c 7c 2b 27 | 29 0d 0a 0d 0a 7c 47 65 |erb+||+'|)....|Ge|
|00001640| 74 2d 6e 75 6d 62 65 72 | 7c 20 61 6e 64 20 7c 47 |t-number|| and |G|
|00001650| 65 74 2d 6e 75 6d 62 65 | 72 2d 70 72 65 66 69 78 |et-numbe|r-prefix|
|00001660| 65 64 7c 20 68 65 6c 70 | 20 72 65 61 64 69 6e 67 |ed| help| reading|
|00001670| 20 61 20 6e 75 6d 62 65 | 72 20 70 72 65 66 69 78 | a numbe|r prefix|
|00001680| 65 64 0d 0a 62 79 20 60 | 7c 23 7c 27 3a 20 7c 47 |ed..by `||#|': |G|
|00001690| 65 74 2d 6e 75 6d 62 65 | 72 7c 20 69 73 20 63 61 |et-numbe|r| is ca|
|000016a0| 6c 6c 65 64 20 62 65 66 | 6f 72 65 20 74 68 65 20 |lled bef|ore the |
|000016b0| 60 7c 23 7c 27 20 6f 63 | 63 75 72 65 64 2c 20 62 |`|#|' oc|cured, b|
|000016c0| 75 74 20 77 68 65 6e 20 | 77 65 0d 0a 61 6c 72 65 |ut when |we..alre|
|000016d0| 61 64 79 20 6b 6e 6f 77 | 20 77 65 27 72 65 20 64 |ady know| we're d|
|000016e0| 65 61 6c 69 6e 67 20 77 | 69 74 68 20 61 20 6e 75 |ealing w|ith a nu|
|000016f0| 6d 62 65 72 2e 20 7c 47 | 65 74 2d 6e 75 6d 62 65 |mber. |G|et-numbe|
|00001700| 72 2d 70 72 65 66 69 78 | 65 64 7c 20 69 73 0d 0a |r-prefix|ed| is..|
|00001710| 63 61 6c 6c 65 64 20 77 | 68 65 6e 20 74 68 65 20 |called w|hen the |
|00001720| 73 68 61 72 70 20 68 61 | 73 20 62 65 65 6e 20 72 |sharp ha|s been r|
|00001730| 65 61 64 2c 20 61 6e 64 | 20 77 65 20 77 61 6e 74 |ead, and| we want|
|00001740| 20 74 6f 20 69 6e 74 65 | 72 70 72 65 74 20 74 68 | to inte|rpret th|
|00001750| 65 20 66 6f 6c 6c 6f 77 | 69 6e 67 0d 0a 63 68 61 |e follow|ing..cha|
|00001760| 72 61 63 74 65 72 2e 20 | 49 6e 20 74 68 69 73 20 |racter. |In this |
|00001770| 76 65 72 73 69 6f 6e 2c | 20 69 6e 65 78 61 63 74 |version,| inexact|
|00001780| 20 61 6e 64 20 65 78 61 | 63 74 20 6e 75 6d 62 65 | and exa|ct numbe|
|00001790| 72 73 20 61 72 65 20 68 | 61 6e 64 6c 65 64 20 6c |rs are h|andled l|
|000017a0| 69 6b 65 77 69 73 65 2e | 0d 0a 0d 0a 7b 5c 66 6f |ikewise.|....{\fo|
|000017b0| 6f 74 6e 6f 74 65 73 69 | 7a 65 0d 0a 28 6c 65 74 |otnotesi|ze..(let|
|000017c0| 72 65 63 20 28 28 71 75 | 6f 74 69 66 79 20 28 6c |rec ((qu|otify (l|
|000017d0| 61 6d 62 64 61 20 28 73 | 74 72 69 6e 67 20 73 65 |ambda (s|tring se|
|000017e0| 70 61 72 61 74 6f 72 29 | 0d 0a 09 09 20 20 20 20 |parator)|.... |
|000017f0| 28 64 65 66 69 6e 65 20 | 28 73 20 6c 29 0d 0a 09 |(define |(s l)...|
|00001800| 09 20 20 20 20 20 20 28 | 63 6f 6e 64 20 28 28 6e |. (|cond ((n|
|00001810| 75 6c 6c 3f 20 6c 29 20 | 28 6c 69 73 74 20 73 65 |ull? l) |(list se|
|00001820| 70 61 72 61 74 6f 72 29 | 29 0d 0a 09 09 09 20 20 |parator)|)..... |
|00001830| 20 20 28 28 6f 72 20 28 | 65 71 75 61 6c 3f 20 28 | ((or (|equal? (|
|00001840| 63 61 72 20 6c 29 20 73 | 65 70 61 72 61 74 6f 72 |car l) s|eparator|
|00001850| 29 0d 0a 09 09 09 09 20 | 28 65 71 75 61 6c 3f 20 |)...... |(equal? |
|00001860| 28 63 61 72 20 6c 29 20 | 23 5c 5c 29 29 0d 0a 09 |(car l) |#\\))...|
|00001870| 09 09 20 20 20 20 20 28 | 63 6f 6e 73 20 23 5c 5c |.. (|cons #\\|
|00001880| 20 28 63 6f 6e 73 20 28 | 63 61 72 20 6c 29 20 28 | (cons (|car l) (|
|00001890| 73 20 28 63 64 72 20 6c | 29 29 29 29 29 0d 0a 09 |s (cdr l|)))))...|
|000018a0| 09 09 20 20 20 20 28 65 | 6c 73 65 20 28 63 6f 6e |.. (e|lse (con|
|000018b0| 73 20 28 63 61 72 20 6c | 29 20 28 73 20 28 63 64 |s (car l|) (s (cd|
|000018c0| 72 20 6c 29 29 29 29 29 | 29 0d 0a 09 09 20 20 20 |r l)))))|).... |
|000018d0| 20 28 6c 69 73 74 2d 3e | 73 74 72 69 6e 67 20 28 | (list->|string (|
|000018e0| 63 6f 6e 73 20 73 65 70 | 61 72 61 74 6f 72 20 28 |cons sep|arator (|
|000018f0| 73 20 28 73 74 72 69 6e | 67 2d 3e 6c 69 73 74 20 |s (strin|g->list |
|00001900| 73 74 72 69 6e 67 29 29 | 29 29 29 29 0d 0a 09 20 |string))|))))... |
|00001910| 28 73 70 65 63 63 68 61 | 72 73 20 27 28 28 23 5c |(speccha|rs '((#\|
|00001920| 73 70 61 63 65 20 2e 20 | 22 23 5c 5c 53 50 41 43 |space . |"#\\SPAC|
|00001930| 45 22 29 0d 0a 09 09 20 | 20 20 20 20 20 28 23 5c |E").... | (#\|
|00001940| 65 73 63 61 70 65 20 2e | 20 22 23 5c 5c 45 53 43 |escape .| "#\\ESC|
|00001950| 41 50 45 22 29 0d 0a 09 | 09 20 20 20 20 20 20 28 |APE")...|. (|
|00001960| 23 5c 74 61 62 20 2e 20 | 22 23 5c 5c 54 41 42 22 |#\tab . |"#\\TAB"|
|00001970| 29 0d 0a 09 09 20 20 20 | 20 20 20 28 23 5c 6e 65 |).... | (#\ne|
|00001980| 77 6c 69 6e 65 20 2e 20 | 22 23 5c 5c 4e 45 57 4c |wline . |"#\\NEWL|
|00001990| 49 4e 45 22 29 0d 0a 09 | 09 20 20 20 20 20 20 28 |INE")...|. (|
|000019a0| 23 5c 70 61 67 65 20 2e | 20 22 23 5c 5c 50 41 47 |#\page .| "#\\PAG|
|000019b0| 45 22 29 0d 0a 09 09 20 | 20 20 20 20 20 28 23 5c |E").... | (#\|
|000019c0| 72 65 74 75 72 6e 20 2e | 20 22 23 5c 5c 52 45 54 |return .| "#\\RET|
|000019d0| 55 52 4e 22 29 29 29 0d | 0a 09 20 28 73 74 72 61 |URN"))).|.. (stra|
|000019e0| 6e 67 65 3f 20 28 6c 61 | 6d 62 64 61 20 28 73 29 |nge? (la|mbda (s)|
|000019f0| 0d 0a 09 09 20 20 20 20 | 20 28 6f 72 20 28 73 74 |.... | (or (st|
|00001a00| 72 69 6e 67 2d 3e 6e 75 | 6d 62 65 72 20 73 29 0d |ring->nu|mber s).|
|00001a10| 0a 09 09 09 20 28 73 74 | 72 69 6e 67 2d 6e 75 6c |.... (st|ring-nul|
|00001a20| 6c 3f 20 73 29 0d 0a 09 | 09 09 20 28 65 71 75 61 |l? s)...|.. (equa|
|00001a30| 6c 3f 20 73 20 22 2e 22 | 29 0d 0a 09 09 09 20 28 |l? s "."|)..... (|
|00001a40| 65 71 75 61 6c 3f 20 28 | 73 75 62 73 74 72 69 6e |equal? (|substrin|
|00001a50| 67 20 28 73 74 72 69 6e | 67 2d 61 70 70 65 6e 64 |g (strin|g-append|
|00001a60| 20 73 20 22 20 20 22 29 | 20 30 20 32 29 20 22 23 | s " ")| 0 2) "#|
|00001a70| 5c 5c 22 29 0d 0a 09 09 | 09 20 28 64 6f 20 28 28 |\\")....|. (do ((|
|00001a80| 6c 20 28 73 74 72 69 6e | 67 2d 3e 6c 69 73 74 20 |l (strin|g->list |
|00001a90| 73 29 20 28 63 64 72 20 | 6c 29 29 29 0d 0a 09 09 |s) (cdr |l)))....|
|00001aa0| 09 20 20 20 20 20 28 28 | 6f 72 20 28 6e 75 6c 6c |. ((|or (null|
|00001ab0| 3f 20 6c 29 0d 0a 09 09 | 09 09 20 20 28 6e 6f 74 |? l)....|.. (not|
|00001ac0| 20 28 63 68 61 72 3d 3f | 20 28 63 61 72 20 6c 29 | (char=?| (car l)|
|00001ad0| 20 28 63 68 61 72 2d 75 | 70 63 61 73 65 20 28 63 | (char-u|pcase (c|
|00001ae0| 61 72 20 6c 29 29 29 29 | 0d 0a 09 09 09 09 20 20 |ar l))))|...... |
|00001af0| 28 6d 65 6d 62 65 72 20 | 28 63 61 72 20 6c 29 20 |(member |(car l) |
|00001b00| 28 6c 69 73 74 2a 20 23 | 5c 7c 20 23 5c 2c 20 23 |(list* #|\| #\, #|
|00001b10| 5c 27 20 23 5c 3b 20 23 | 5c 22 0d 0a 09 09 09 09 |\' #\; #|\"......|
|00001b20| 09 09 09 20 23 5c 3a 20 | 23 5c 28 20 23 5c 29 20 |... #\: |#\( #\) |
|00001b30| 23 5c 60 20 23 5c 5c 0d | 0a 09 09 09 09 09 09 09 |#\` #\\.|........|
|00001b40| 20 28 6d 61 70 20 63 61 | 72 20 73 70 65 63 63 68 | (map ca|r specch|
|00001b50| 61 72 73 29 29 29 29 0d | 0a 09 09 09 20 20 20 20 |ars)))).|.... |
|00001b60| 20 20 28 6e 6f 74 20 28 | 6e 75 6c 6c 3f 20 6c 29 | (not (|null? l)|
|00001b70| 29 29 29 29 29 29 0d 0a | 09 20 28 70 75 74 2d 6c |))))))..|. (put-l|
|00001b80| 69 73 74 20 28 6c 61 6d | 62 64 61 20 28 6c 20 70 |ist (lam|bda (l p|
|00001b90| 72 69 6e 74 65 72 20 6f | 75 74 70 75 74 29 0d 0a |rinter o|utput)..|
|00001ba0| 09 09 20 20 20 20 20 28 | 63 6f 6e 64 20 28 28 6e |.. (|cond ((n|
|00001bb0| 75 6c 6c 3f 20 6c 29 20 | 28 25 70 75 74 63 68 61 |ull? l) |(%putcha|
|00001bc0| 72 20 23 5c 29 20 6f 75 | 74 70 75 74 29 29 0d 0a |r #\) ou|tput))..|
|00001bd0| 09 09 09 20 20 20 28 28 | 61 74 6f 6d 3f 20 6c 29 |... ((|atom? l)|
|00001be0| 20 28 25 70 75 74 73 74 | 72 69 6e 67 20 22 20 2e | (%putst|ring " .|
|00001bf0| 20 22 20 6f 75 74 70 75 | 74 29 0d 0a 09 09 09 20 | " outpu|t)..... |
|00001c00| 20 20 20 28 70 72 69 6e | 74 65 72 20 6c 20 6f 75 | (prin|ter l ou|
|00001c10| 74 70 75 74 29 20 28 25 | 70 75 74 63 68 61 72 20 |tput) (%|putchar |
|00001c20| 23 5c 29 20 6f 75 74 70 | 75 74 29 29 0d 0a 09 09 |#\) outp|ut))....|
|00001c30| 09 20 20 20 28 65 6c 73 | 65 20 28 70 72 69 6e 74 |. (els|e (print|
|00001c40| 65 72 20 28 63 61 72 20 | 6c 29 20 6f 75 74 70 75 |er (car |l) outpu|
|00001c50| 74 29 0d 0a 09 09 09 09 | 20 28 69 66 20 28 70 61 |t)......| (if (pa|
|00001c60| 69 72 3f 20 28 63 64 72 | 20 6c 29 29 20 28 25 70 |ir? (cdr| l)) (%p|
|00001c70| 75 74 63 68 61 72 20 23 | 5c 73 70 61 63 65 20 6f |utchar #|\space o|
|00001c80| 75 74 70 75 74 29 29 0d | 0a 09 09 09 09 20 28 70 |utput)).|..... (p|
|00001c90| 75 74 2d 6c 69 73 74 20 | 28 63 64 72 20 6c 29 20 |ut-list |(cdr l) |
|00001ca0| 70 72 69 6e 74 65 72 20 | 6f 75 74 70 75 74 29 29 |printer |output))|
|00001cb0| 29 29 29 0d 0a 0d 0a 09 | 20 28 67 65 74 2d 63 68 |))).....| (get-ch|
|00001cc0| 61 72 20 28 6c 61 6d 62 | 64 61 20 28 69 6e 70 75 |ar (lamb|da (inpu|
|00001cd0| 74 29 0d 0a 09 09 20 20 | 20 20 20 28 6c 65 74 20 |t).... | (let |
|00001ce0| 28 28 63 68 20 28 40 72 | 65 61 64 2d 63 68 61 72 |((ch (@r|ead-char|
|00001cf0| 20 69 6e 70 75 74 29 29 | 29 0d 0a 09 09 20 20 20 | input))|).... |
|00001d00| 20 20 20 20 28 63 6f 6e | 64 20 28 28 63 68 61 72 | (con|d ((char|
|00001d10| 2d 77 68 69 74 65 73 70 | 61 63 65 3f 09 63 68 29 |-whitesp|ace?.ch)|
|00001d20| 20 28 67 65 74 2d 63 68 | 61 72 20 69 6e 70 75 74 | (get-ch|ar input|
|00001d30| 29 29 0d 0a 09 09 09 20 | 20 20 20 20 28 28 65 71 |))..... | ((eq|
|00001d40| 75 61 6c 3f 20 63 68 20 | 23 5c 3b 29 20 28 62 65 |ual? ch |#\;) (be|
|00001d50| 67 69 6e 20 28 40 72 65 | 61 64 2d 6c 69 6e 65 20 |gin (@re|ad-line |
|00001d60| 69 6e 70 75 74 29 0d 0a | 09 09 09 09 09 09 20 20 |input)..|...... |
|00001d70| 20 20 20 28 67 65 74 2d | 63 68 61 72 20 69 6e 70 | (get-|char inp|
|00001d80| 75 74 29 29 29 0d 0a 09 | 09 09 20 20 20 20 20 28 |ut)))...|.. (|
|00001d90| 65 6c 73 65 20 63 68 29 | 29 29 29 29 0d 0a 09 20 |else ch)|))))... |
|00001da0| 28 64 65 6c 69 6d 62 79 | 20 28 6c 61 6d 62 64 61 |(delimby| (lambda|
|00001db0| 20 28 63 68 20 69 6e 70 | 75 74 29 0d 0a 09 09 20 | (ch inp|ut).... |
|00001dc0| 20 20 20 28 6c 65 74 20 | 28 28 69 6e 20 28 40 72 | (let |((in (@r|
|00001dd0| 65 61 64 2d 63 68 61 72 | 20 69 6e 70 75 74 29 29 |ead-char| input))|
|00001de0| 29 0d 0a 09 09 20 20 20 | 20 20 20 28 63 6f 6e 64 |).... | (cond|
|00001df0| 20 28 28 40 65 6f 66 2d | 6f 62 6a 65 63 74 3f 20 | ((@eof-|object? |
|00001e00| 69 6e 29 20 28 65 72 72 | 6f 72 20 22 55 6e 6d 61 |in) (err|or "Unma|
|00001e10| 74 63 68 65 64 20 22 20 | 63 68 29 29 0d 0a 09 09 |tched " |ch))....|
|00001e20| 09 20 20 20 20 28 28 65 | 71 75 61 6c 3f 20 69 6e |. ((e|qual? in|
|00001e30| 20 23 5c 5c 29 0d 0a 20 | 20 20 20 20 20 20 20 20 | #\\).. | |
|00001e40| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001e50| 20 20 20 20 28 6c 65 74 | 20 28 28 6e 65 78 74 20 | (let| ((next |
|00001e60| 28 40 72 65 61 64 2d 63 | 68 61 72 20 69 6e 70 75 |(@read-c|har inpu|
|00001e70| 74 29 29 29 0d 0a 09 09 | 09 20 20 20 20 20 20 20 |t)))....|. |
|00001e80| 28 69 66 20 28 40 65 6f | 66 2d 6f 62 6a 65 63 74 |(if (@eo|f-object|
|00001e90| 3f 20 6e 65 78 74 29 0d | 0a 09 09 09 09 20 20 20 |? next).|..... |
|00001ea0| 28 65 72 72 6f 72 20 22 | 45 73 63 61 70 65 64 20 |(error "|Escaped |
|00001eb0| 76 6f 69 64 22 29 0d 0a | 09 09 09 09 20 20 20 28 |void")..|.... (|
|00001ec0| 63 6f 6e 73 20 6e 65 78 | 74 20 28 64 65 6c 69 6d |cons nex|t (delim|
|00001ed0| 62 79 20 63 68 20 69 6e | 70 75 74 29 29 29 29 29 |by ch in|put)))))|
|00001ee0| 0d 0a 09 09 09 20 20 20 | 20 28 28 65 71 75 61 6c |..... | ((equal|
|00001ef0| 3f 20 63 68 20 69 6e 29 | 20 28 29 29 0d 0a 09 09 |? ch in)| ())....|
|00001f00| 09 20 20 20 20 28 65 6c | 73 65 20 28 63 6f 6e 73 |. (el|se (cons|
|00001f10| 20 69 6e 20 28 64 65 6c | 69 6d 62 79 20 63 68 20 | in (del|imby ch |
|00001f20| 69 6e 70 75 74 29 29 29 | 29 29 29 29 0d 0a 09 20 |input)))|))))... |
|00001f30| 28 6c 69 73 74 2d 3e 73 | 79 6d 62 6f 6c 20 28 6c |(list->s|ymbol (l|
|00001f40| 61 6d 62 64 61 20 28 6c | 29 0d 0a 09 09 09 20 28 |ambda (l|)..... (|
|00001f50| 73 74 72 69 6e 67 2d 3e | 73 79 6d 62 6f 6c 20 28 |string->|symbol (|
|00001f60| 6c 69 73 74 2d 3e 73 74 | 72 69 6e 67 20 6c 29 29 |list->st|ring l))|
|00001f70| 29 29 0d 0a 09 20 28 67 | 65 74 2d 73 79 6d 62 6f |))... (g|et-symbo|
|00001f80| 6c 20 28 6c 61 6d 62 64 | 61 20 28 69 6e 70 75 74 |l (lambd|a (input|
|00001f90| 29 0d 0a 09 09 20 20 20 | 20 20 20 20 28 6c 65 74 |).... | (let|
|00001fa0| 20 28 28 66 69 72 73 74 | 20 28 40 72 65 61 64 2d | ((first| (@read-|
|00001fb0| 63 68 61 72 20 69 6e 70 | 75 74 29 29 29 0d 0a 09 |char inp|ut)))...|
|00001fc0| 09 09 20 28 63 6f 6e 64 | 20 28 28 40 65 6f 66 2d |.. (cond| ((@eof-|
|00001fd0| 6f 62 6a 65 63 74 3f 20 | 66 69 72 73 74 29 20 27 |object? |first) '|
|00001fe0| 28 29 29 0d 0a 09 09 09 | 20 20 20 20 20 20 20 28 |()).....| (|
|00001ff0| 28 63 68 61 72 2d 77 68 | 69 74 65 73 70 61 63 65 |(char-wh|itespace|
|00002000| 3f 20 66 69 72 73 74 29 | 20 27 28 29 29 0d 0a 09 |? first)| '())...|
|00002010| 09 09 20 20 20 20 20 20 | 20 28 28 6d 65 6d 62 65 |.. | ((membe|
|00002020| 72 20 66 69 72 73 74 20 | 27 28 23 5c 28 20 23 5c |r first |'(#\( #\|
|00002030| 29 20 23 5c 27 20 23 5c | 60 20 23 5c 3b 0d 0a 20 |) #\' #\|` #\;.. |
|00002040| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002050| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002060| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 23 | | #|
|00002070| 5c 2c 20 23 5c 22 20 23 | 5c 7c 20 23 5c 5b 20 23 |\, #\" #|\| #\[ #|
|00002080| 5c 5d 0d 0a 20 20 20 20 | 20 20 20 20 20 20 20 20 |\].. | |
|00002090| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000020a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000020b0| 20 20 20 20 23 5c 7b 20 | 23 5c 7d 29 29 0d 0a 20 | #\{ |#\})).. |
|000020c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000020d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 28 | | (|
|000020e0| 40 75 6e 72 65 61 64 2d | 63 68 61 72 20 69 6e 70 |@unread-|char inp|
|000020f0| 75 74 29 20 27 28 29 29 | 0d 0a 09 09 09 20 20 20 |ut) '())|..... |
|00002100| 20 20 20 20 28 65 6c 73 | 65 20 28 63 6f 6e 73 20 | (els|e (cons |
|00002110| 28 63 68 61 72 2d 75 70 | 63 61 73 65 20 66 69 72 |(char-up|case fir|
|00002120| 73 74 29 0d 0a 09 09 09 | 09 09 20 20 20 28 67 65 |st).....|.. (ge|
|00002130| 74 2d 73 79 6d 62 6f 6c | 20 69 6e 70 75 74 29 29 |t-symbol| input))|
|00002140| 29 29 29 29 29 0d 0a 09 | 20 28 67 65 74 2d 6e 75 |)))))...| (get-nu|
|00002150| 6d 62 65 72 20 28 6c 61 | 6d 62 64 61 20 28 62 61 |mber (la|mbda (ba|
|00002160| 73 65 20 69 6e 70 75 74 | 29 0d 0a 09 09 20 20 20 |se input|).... |
|00002170| 20 20 20 20 28 6c 65 74 | 20 28 28 66 69 72 73 74 | (let| ((first|
|00002180| 20 28 40 72 65 61 64 2d | 63 68 61 72 20 69 6e 70 | (@read-|char inp|
|00002190| 75 74 29 29 29 0d 0a 09 | 09 09 20 28 69 66 20 28 |ut)))...|.. (if (|
|000021a0| 65 71 75 61 6c 3f 20 66 | 69 72 73 74 20 23 5c 23 |equal? f|irst #\#|
|000021b0| 29 0d 0a 09 09 09 20 20 | 20 20 20 28 67 65 74 2d |)..... | (get-|
|000021c0| 6e 75 6d 62 65 72 2d 70 | 72 65 66 69 78 65 64 20 |number-p|refixed |
|000021d0| 62 61 73 65 20 69 6e 70 | 75 74 29 0d 0a 09 09 09 |base inp|ut).....|
|000021e0| 20 20 20 20 20 28 6c 65 | 74 2a 20 28 28 61 74 6f | (le|t* ((ato|
|000021f0| 6d 20 28 6c 69 73 74 2d | 3e 73 74 72 69 6e 67 0d |m (list-|>string.|
|00002200| 0a 09 09 09 09 09 20 20 | 20 20 28 63 6f 6e 73 20 |...... | (cons |
|00002210| 66 69 72 73 74 20 28 67 | 65 74 2d 73 79 6d 62 6f |first (g|et-symbo|
|00002220| 6c 20 69 6e 70 75 74 29 | 29 29 29 0d 0a 09 09 09 |l input)|))).....|
|00002230| 09 20 20 20 20 28 6e 75 | 6d 62 65 72 20 28 73 74 |. (nu|mber (st|
|00002240| 72 69 6e 67 2d 3e 6e 75 | 6d 62 65 72 20 61 74 6f |ring->nu|mber ato|
|00002250| 6d 20 62 61 73 65 29 29 | 29 0d 0a 09 09 09 20 20 |m base))|)..... |
|00002260| 20 20 20 20 20 28 69 66 | 20 28 6e 75 6d 62 65 72 | (if| (number|
|00002270| 3f 20 6e 75 6d 62 65 72 | 29 0d 0a 09 09 09 09 20 |? number|)...... |
|00002280| 20 20 6e 75 6d 62 65 72 | 0d 0a 09 09 09 09 20 20 | number|...... |
|00002290| 20 28 65 72 72 6f 72 20 | 22 4e 75 6d 62 65 72 20 | (error |"Number |
|000022a0| 65 78 70 65 63 74 65 64 | 22 20 61 74 6f 6d 29 29 |expected|" atom))|
|000022b0| 29 29 29 29 29 0d 0a 09 | 20 28 67 65 74 2d 6e 75 |)))))...| (get-nu|
|000022c0| 6d 62 65 72 2d 70 72 65 | 66 69 78 65 64 20 28 6c |mber-pre|fixed (l|
|000022d0| 61 6d 62 64 61 20 28 62 | 61 73 65 20 69 6e 70 75 |ambda (b|ase inpu|
|000022e0| 74 29 0d 0a 09 09 09 09 | 28 6c 65 74 20 28 28 6e |t)......|(let ((n|
|000022f0| 65 78 74 20 28 63 68 61 | 72 2d 75 70 63 61 73 65 |ext (cha|r-upcase|
|00002300| 20 28 40 72 65 61 64 2d | 63 68 61 72 20 69 6e 70 | (@read-|char inp|
|00002310| 75 74 29 29 29 29 0d 0a | 09 09 09 09 20 20 28 63 |ut))))..|.... (c|
|00002320| 61 73 65 20 6e 65 78 74 | 0d 0a 09 09 09 09 20 20 |ase next|...... |
|00002330| 20 20 28 28 23 5c 42 29 | 20 28 67 65 74 2d 6e 75 | ((#\B)| (get-nu|
|00002340| 6d 62 65 72 20 32 20 69 | 6e 70 75 74 29 29 0d 0a |mber 2 i|nput))..|
|00002350| 09 09 09 09 20 20 20 20 | 28 28 23 5c 4f 29 20 28 |.... |((#\O) (|
|00002360| 67 65 74 2d 6e 75 6d 62 | 65 72 20 38 20 69 6e 70 |get-numb|er 8 inp|
|00002370| 75 74 29 29 0d 0a 09 09 | 09 09 20 20 20 20 28 28 |ut))....|.. ((|
|00002380| 23 5c 44 29 20 28 67 65 | 74 2d 6e 75 6d 62 65 72 |#\D) (ge|t-number|
|00002390| 20 31 30 20 69 6e 70 75 | 74 29 29 0d 0a 09 09 09 | 10 inpu|t)).....|
|000023a0| 09 20 20 20 20 28 28 23 | 5c 58 29 20 28 67 65 74 |. ((#|\X) (get|
|000023b0| 2d 6e 75 6d 62 65 72 20 | 31 36 20 69 6e 70 75 74 |-number |16 input|
|000023c0| 29 29 0d 0a 09 09 09 09 | 20 20 20 20 28 28 23 5c |))......| ((#\|
|000023d0| 45 20 23 5c 49 29 20 28 | 67 65 74 2d 6e 75 6d 62 |E #\I) (|get-numb|
|000023e0| 65 72 20 62 61 73 65 20 | 69 6e 70 75 74 29 29 0d |er base |input)).|
|000023f0| 0a 09 09 09 09 20 20 20 | 20 28 65 6c 73 65 20 28 |..... | (else (|
|00002400| 65 72 72 6f 72 20 22 49 | 6c 6c 65 67 61 6c 20 75 |error "I|llegal u|
|00002410| 73 65 20 6f 66 20 23 22 | 20 6e 65 78 74 29 29 29 |se of #"| next)))|
|00002420| 29 29 29 0d 0a 09 20 29 | 0d 0a 20 20 28 73 65 74 |)))... )|.. (set|
|00002430| 21 20 40 77 72 69 74 65 | 0d 0a 09 28 6c 61 6d 62 |! @write|...(lamb|
|00002440| 64 61 20 28 64 61 74 75 | 6d 20 2e 20 70 6f 72 74 |da (datu|m . port|
|00002450| 29 0d 0a 09 20 20 28 6c | 65 74 20 28 28 6f 75 74 |)... (l|et ((out|
|00002460| 70 75 74 20 28 63 6f 6e | 64 20 28 28 6e 75 6c 6c |put (con|d ((null|
|00002470| 3f 20 70 6f 72 74 29 20 | 28 63 75 72 72 65 6e 74 |? port) |(current|
|00002480| 2d 6f 75 74 70 75 74 2d | 70 6f 72 74 29 29 0d 0a |-output-|port))..|
|00002490| 09 09 09 20 20 20 20 20 | 20 28 28 70 6f 72 74 3f |... | ((port?|
|000024a0| 20 28 63 61 72 20 70 6f | 72 74 29 29 20 28 63 61 | (car po|rt)) (ca|
|000024b0| 72 20 70 6f 72 74 29 29 | 0d 0a 09 09 09 20 20 20 |r port))|..... |
|000024c0| 20 20 20 28 65 6c 73 65 | 20 28 65 72 72 6f 72 20 | (else| (error |
|000024d0| 22 50 6f 72 74 20 65 78 | 70 65 63 74 65 64 22 20 |"Port ex|pected" |
|000024e0| 6f 75 74 70 75 74 29 29 | 29 29 29 0d 0a 09 20 20 |output))|)))... |
|000024f0| 20 20 28 63 6f 6e 64 20 | 28 28 6e 75 6d 62 65 72 | (cond |((number|
|00002500| 3f 20 64 61 74 75 6d 29 | 20 28 25 70 75 74 73 74 |? datum)| (%putst|
|00002510| 72 69 6e 67 20 28 6e 75 | 6d 62 65 72 2d 3e 73 74 |ring (nu|mber->st|
|00002520| 72 69 6e 67 20 64 61 74 | 75 6d 29 20 6f 75 74 70 |ring dat|um) outp|
|00002530| 75 74 29 29 0d 0a 09 09 | 20 20 28 28 70 61 69 72 |ut))....| ((pair|
|00002540| 3f 20 64 61 74 75 6d 29 | 0d 0a 09 09 20 20 20 28 |? datum)|.... (|
|00002550| 25 70 75 74 63 68 61 72 | 20 22 28 22 20 6f 75 74 |%putchar| "(" out|
|00002560| 70 75 74 29 0d 0a 09 09 | 20 20 20 28 70 75 74 2d |put)....| (put-|
|00002570| 6c 69 73 74 20 64 61 74 | 75 6d 20 40 77 72 69 74 |list dat|um @writ|
|00002580| 65 20 6f 75 74 70 75 74 | 29 29 0d 0a 09 09 20 20 |e output|)).... |
|00002590| 28 28 6e 75 6c 6c 3f 20 | 64 61 74 75 6d 29 20 28 |((null? |datum) (|
|000025a0| 25 70 75 74 73 74 72 69 | 6e 67 20 22 28 29 22 20 |%putstri|ng "()" |
|000025b0| 6f 75 74 70 75 74 29 29 | 0d 0a 09 09 20 20 28 28 |output))|.... ((|
|000025c0| 73 74 72 69 6e 67 3f 20 | 64 61 74 75 6d 29 20 28 |string? |datum) (|
|000025d0| 25 70 75 74 73 74 72 69 | 6e 67 20 28 71 75 6f 74 |%putstri|ng (quot|
|000025e0| 69 66 79 20 64 61 74 75 | 6d 20 23 5c 22 29 20 6f |ify datu|m #\") o|
|000025f0| 75 74 70 75 74 29 29 0d | 0a 09 09 20 20 28 28 73 |utput)).|... ((s|
|00002600| 79 6d 62 6f 6c 3f 20 64 | 61 74 75 6d 29 20 28 6c |ymbol? d|atum) (l|
|00002610| 65 74 20 28 28 64 61 74 | 75 6d 20 28 73 79 6d 62 |et ((dat|um (symb|
|00002620| 6f 6c 2d 3e 73 74 72 69 | 6e 67 20 64 61 74 75 6d |ol->stri|ng datum|
|00002630| 29 29 29 0d 0a 09 09 09 | 09 20 20 20 20 20 28 25 |))).....|. (%|
|00002640| 70 75 74 73 74 72 69 6e | 67 20 28 69 66 20 28 73 |putstrin|g (if (s|
|00002650| 74 72 61 6e 67 65 3f 20 | 64 61 74 75 6d 29 0d 0a |trange? |datum)..|
|00002660| 09 09 09 09 09 09 20 20 | 20 20 20 28 71 75 6f 74 |...... | (quot|
|00002670| 69 66 79 20 64 61 74 75 | 6d 20 23 5c 7c 29 0d 0a |ify datu|m #\|)..|
|00002680| 09 09 09 09 09 09 20 20 | 20 20 20 64 61 74 75 6d |...... | datum|
|00002690| 29 0d 0a 09 09 09 09 09 | 09 20 6f 75 74 70 75 74 |).......|. output|
|000026a0| 29 29 29 0d 0a 09 09 20 | 20 28 28 63 68 61 72 3f |))).... | ((char?|
|000026b0| 20 64 61 74 75 6d 29 0d | 0a 20 20 20 20 20 20 20 | datum).|. |
|000026c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 28 69 66 20 | | (if |
|000026d0| 28 61 73 73 6f 63 20 64 | 61 74 75 6d 20 73 70 65 |(assoc d|atum spe|
|000026e0| 63 63 68 61 72 73 29 0d | 0a 09 09 20 20 20 20 20 |cchars).|... |
|000026f0| 20 20 28 25 70 75 74 73 | 74 72 69 6e 67 20 28 63 | (%puts|tring (c|
|00002700| 64 72 20 28 61 73 73 6f | 63 20 64 61 74 75 6d 20 |dr (asso|c datum |
|00002710| 73 70 65 63 63 68 61 72 | 73 29 29 20 6f 75 74 70 |specchar|s)) outp|
|00002720| 75 74 29 0d 0a 09 09 20 | 20 20 20 20 20 20 28 25 |ut).... | (%|
|00002730| 70 75 74 73 74 72 69 6e | 67 20 28 73 74 72 69 6e |putstrin|g (strin|
|00002740| 67 20 23 5c 23 20 23 5c | 5c 20 64 61 74 75 6d 29 |g #\# #\|\ datum)|
|00002750| 20 6f 75 74 70 75 74 29 | 29 29 0d 0a 09 09 20 20 | output)|)).... |
|00002760| 28 28 76 65 63 74 6f 72 | 3f 20 64 61 74 75 6d 29 |((vector|? datum)|
|00002770| 0d 0a 09 09 20 20 20 28 | 25 70 75 74 73 74 72 69 |.... (|%putstri|
|00002780| 6e 67 20 22 23 28 22 20 | 6f 75 74 70 75 74 29 0d |ng "#(" |output).|
|00002790| 0a 09 09 20 20 20 28 64 | 6f 20 28 28 69 20 30 20 |... (d|o ((i 0 |
|000027a0| 28 31 2b 20 69 29 29 29 | 0d 0a 09 09 20 20 20 20 |(1+ i)))|.... |
|000027b0| 20 20 20 28 28 3d 20 69 | 20 28 76 65 63 74 6f 72 | ((= i| (vector|
|000027c0| 2d 6c 65 6e 67 74 68 20 | 64 61 74 75 6d 29 29 20 |-length |datum)) |
|000027d0| 28 25 70 75 74 73 74 72 | 69 6e 67 20 22 29 22 20 |(%putstr|ing ")" |
|000027e0| 6f 75 74 70 75 74 29 29 | 0d 0a 09 09 20 20 20 20 |output))|.... |
|000027f0| 20 20 20 28 40 77 72 69 | 74 65 20 28 76 65 63 74 | (@wri|te (vect|
|00002800| 6f 72 2d 72 65 66 20 64 | 61 74 75 6d 20 69 29 20 |or-ref d|atum i) |
|00002810| 6f 75 74 70 75 74 29 0d | 0a 09 09 20 20 20 20 20 |output).|... |
|00002820| 20 20 28 69 66 20 28 3c | 20 69 20 28 2d 31 2b 20 | (if (<| i (-1+ |
|00002830| 28 76 65 63 74 6f 72 2d | 6c 65 6e 67 74 68 20 64 |(vector-|length d|
|00002840| 61 74 75 6d 29 29 29 0d | 0a 09 09 09 20 20 20 28 |atum))).|.... (|
|00002850| 25 70 75 74 73 74 72 69 | 6e 67 20 22 20 22 20 6f |%putstri|ng " " o|
|00002860| 75 74 70 75 74 29 29 29 | 29 0d 0a 09 09 20 20 29 |utput)))|).... )|
|00002870| 0d 0a 09 20 20 20 20 2a | 74 68 65 2d 6e 6f 6e 2d |... *|the-non-|
|00002880| 70 72 69 6e 74 69 6e 67 | 2d 6f 62 6a 65 63 74 2a |printing|-object*|
|00002890| 29 29 29 0d 0a 20 20 28 | 73 65 74 21 20 40 64 69 |))).. (|set! @di|
|000028a0| 73 70 6c 61 79 0d 0a 09 | 28 6c 61 6d 62 64 61 20 |splay...|(lambda |
|000028b0| 28 64 61 74 75 6d 20 2e | 20 70 6f 72 74 29 0d 0a |(datum .| port)..|
|000028c0| 09 20 20 28 6c 65 74 20 | 28 28 6f 75 74 70 75 74 |. (let |((output|
|000028d0| 20 28 69 66 20 28 6e 75 | 6c 6c 3f 20 70 6f 72 74 | (if (nu|ll? port|
|000028e0| 29 20 28 63 75 72 72 65 | 6e 74 2d 6f 75 74 70 75 |) (curre|nt-outpu|
|000028f0| 74 2d 70 6f 72 74 29 20 | 28 63 61 72 20 70 6f 72 |t-port) |(car por|
|00002900| 74 29 29 29 29 0d 0a 09 | 20 20 20 20 28 63 6f 6e |t))))...| (con|
|00002910| 64 20 28 28 6e 75 6d 62 | 65 72 3f 20 64 61 74 75 |d ((numb|er? datu|
|00002920| 6d 29 20 28 25 70 75 74 | 73 74 72 69 6e 67 20 28 |m) (%put|string (|
|00002930| 6e 75 6d 62 65 72 2d 3e | 73 74 72 69 6e 67 20 64 |number->|string d|
|00002940| 61 74 75 6d 29 20 6f 75 | 74 70 75 74 29 29 0d 0a |atum) ou|tput))..|
|00002950| 09 09 20 20 28 28 70 61 | 69 72 3f 20 64 61 74 75 |.. ((pa|ir? datu|
|00002960| 6d 29 20 28 25 70 75 74 | 63 68 61 72 20 23 5c 28 |m) (%put|char #\(|
|00002970| 20 6f 75 74 70 75 74 29 | 0d 0a 09 09 20 20 20 28 | output)|.... (|
|00002980| 70 75 74 2d 6c 69 73 74 | 20 64 61 74 75 6d 20 40 |put-list| datum @|
|00002990| 64 69 73 70 6c 61 79 20 | 6f 75 74 70 75 74 29 29 |display |output))|
|000029a0| 0d 0a 09 09 20 20 28 28 | 6e 75 6c 6c 3f 20 64 61 |.... ((|null? da|
|000029b0| 74 75 6d 29 20 28 25 70 | 75 74 73 74 72 69 6e 67 |tum) (%p|utstring|
|000029c0| 20 22 28 29 22 20 6f 75 | 74 70 75 74 29 29 0d 0a | "()" ou|tput))..|
|000029d0| 09 09 20 20 28 28 73 74 | 72 69 6e 67 3f 20 64 61 |.. ((st|ring? da|
|000029e0| 74 75 6d 29 20 28 25 70 | 75 74 73 74 72 69 6e 67 |tum) (%p|utstring|
|000029f0| 20 64 61 74 75 6d 20 6f | 75 74 70 75 74 29 29 0d | datum o|utput)).|
|00002a00| 0a 09 09 20 20 28 28 73 | 79 6d 62 6f 6c 3f 20 64 |... ((s|ymbol? d|
|00002a10| 61 74 75 6d 29 20 28 25 | 70 75 74 73 74 72 69 6e |atum) (%|putstrin|
|00002a20| 67 20 28 73 79 6d 62 6f | 6c 2d 3e 73 74 72 69 6e |g (symbo|l->strin|
|00002a30| 67 20 64 61 74 75 6d 29 | 20 6f 75 74 70 75 74 29 |g datum)| output)|
|00002a40| 29 0d 0a 09 09 20 20 28 | 28 63 68 61 72 3f 20 64 |).... (|(char? d|
|00002a50| 61 74 75 6d 29 20 28 25 | 70 75 74 63 68 61 72 20 |atum) (%|putchar |
|00002a60| 64 61 74 75 6d 20 6f 75 | 74 70 75 74 29 29 0d 0a |datum ou|tput))..|
|00002a70| 09 09 20 20 28 28 76 65 | 63 74 6f 72 3f 20 64 61 |.. ((ve|ctor? da|
|00002a80| 74 75 6d 29 20 28 25 70 | 75 74 73 74 72 69 6e 67 |tum) (%p|utstring|
|00002a90| 20 22 23 28 22 20 6f 75 | 74 70 75 74 29 0d 0a 09 | "#(" ou|tput)...|
|00002aa0| 09 20 20 20 28 64 6f 20 | 28 28 69 20 30 20 28 31 |. (do |((i 0 (1|
|00002ab0| 2b 20 69 29 29 29 0d 0a | 09 09 20 20 20 20 20 20 |+ i)))..|.. |
|00002ac0| 20 28 28 3d 20 69 20 28 | 76 65 63 74 6f 72 2d 6c | ((= i (|vector-l|
|00002ad0| 65 6e 67 74 68 20 64 61 | 74 75 6d 29 29 20 28 25 |ength da|tum)) (%|
|00002ae0| 70 75 74 73 74 72 69 6e | 67 20 22 29 22 20 6f 75 |putstrin|g ")" ou|
|00002af0| 74 70 75 74 29 29 0d 0a | 09 09 20 20 20 20 20 20 |tput))..|.. |
|00002b00| 20 28 40 64 69 73 70 6c | 61 79 20 28 76 65 63 74 | (@displ|ay (vect|
|00002b10| 6f 72 2d 72 65 66 20 64 | 61 74 75 6d 20 69 29 29 |or-ref d|atum i))|
|00002b20| 0d 0a 09 09 20 20 20 20 | 20 20 20 28 69 66 20 28 |.... | (if (|
|00002b30| 3c 20 69 20 28 2d 31 2b | 20 28 76 65 63 74 6f 72 |< i (-1+| (vector|
|00002b40| 2d 6c 65 6e 67 74 68 20 | 64 61 74 75 6d 29 29 29 |-length |datum)))|
|00002b50| 0d 0a 09 09 09 20 20 20 | 28 25 70 75 74 73 74 72 |..... |(%putstr|
|00002b60| 69 6e 67 20 22 20 22 29 | 29 29 29 0d 0a 09 09 20 |ing " ")|))).... |
|00002b70| 20 29 0d 0a 09 20 20 20 | 20 2a 74 68 65 2d 6e 6f | )... | *the-no|
|00002b80| 6e 2d 70 72 69 6e 74 69 | 6e 67 2d 6f 62 6a 65 63 |n-printi|ng-objec|
|00002b90| 74 2a 29 29 29 0d 0a 20 | 20 28 73 65 74 21 20 40 |t*))).. | (set! @|
|00002ba0| 6e 65 77 6c 69 6e 65 0d | 0a 09 28 6c 61 6d 62 64 |newline.|..(lambd|
|00002bb0| 61 20 70 6f 72 74 0d 0a | 09 20 20 28 6c 65 74 20 |a port..|. (let |
|00002bc0| 28 28 6f 75 74 70 75 74 | 20 28 69 66 20 28 6e 75 |((output| (if (nu|
|00002bd0| 6c 6c 3f 20 70 6f 72 74 | 29 20 28 63 75 72 72 65 |ll? port|) (curre|
|00002be0| 6e 74 2d 6f 75 74 70 75 | 74 2d 70 6f 72 74 29 20 |nt-outpu|t-port) |
|00002bf0| 28 63 61 72 20 70 6f 72 | 74 29 29 29 29 0d 0a 09 |(car por|t))))...|
|00002c00| 20 20 20 20 28 25 70 75 | 74 63 68 61 72 20 23 5c | (%pu|tchar #\|
|00002c10| 6e 65 77 6c 69 6e 65 20 | 6f 75 74 70 75 74 29 0d |newline |output).|
|00002c20| 0a 09 20 20 20 20 2a 74 | 68 65 2d 6e 6f 6e 2d 70 |.. *t|he-non-p|
|00002c30| 72 69 6e 74 69 6e 67 2d | 6f 62 6a 65 63 74 2a 29 |rinting-|object*)|
|00002c40| 29 29 0d 0a 20 20 28 73 | 65 74 21 20 40 77 72 69 |)).. (s|et! @wri|
|00002c50| 74 65 2d 63 68 61 72 0d | 0a 09 28 6c 61 6d 62 64 |te-char.|..(lambd|
|00002c60| 61 20 28 63 68 61 72 20 | 2e 20 70 6f 72 74 29 0d |a (char |. port).|
|00002c70| 0a 09 20 20 28 6c 65 74 | 20 28 28 6f 75 74 70 75 |.. (let| ((outpu|
|00002c80| 74 20 28 69 66 20 28 6e | 75 6c 6c 3f 20 70 6f 72 |t (if (n|ull? por|
|00002c90| 74 29 20 28 63 75 72 72 | 65 6e 74 2d 6f 75 74 70 |t) (curr|ent-outp|
|00002ca0| 75 74 2d 70 6f 72 74 29 | 20 28 63 61 72 20 70 6f |ut-port)| (car po|
|00002cb0| 72 74 29 29 29 29 0d 0a | 09 20 20 20 20 28 69 66 |rt))))..|. (if|
|00002cc0| 20 28 63 68 61 72 3f 20 | 63 68 61 72 29 0d 0a 09 | (char? |char)...|
|00002cd0| 09 28 40 77 72 69 74 65 | 20 63 68 61 72 20 6f 75 |.(@write| char ou|
|00002ce0| 74 70 75 74 29 0d 0a 09 | 09 28 65 72 72 6f 72 20 |tput)...|.(error |
|00002cf0| 27 40 57 52 49 54 45 2d | 43 48 41 52 20 22 41 72 |'@WRITE-|CHAR "Ar|
|00002d00| 67 75 6d 65 6e 74 20 6d | 75 73 74 20 62 65 20 63 |gument m|ust be c|
|00002d10| 68 61 72 22 20 63 68 61 | 72 29 29 0d 0a 09 20 20 |har" cha|r))... |
|00002d20| 20 20 2a 74 68 65 2d 6e | 6f 6e 2d 70 72 69 6e 74 | *the-n|on-print|
|00002d30| 69 6e 67 2d 6f 62 6a 65 | 63 74 2a 29 29 29 0d 0a |ing-obje|ct*)))..|
|00002d40| 0d 0a 20 20 28 73 65 74 | 21 20 40 72 65 61 64 20 |.. (set|! @read |
|00002d50| 72 65 61 64 29 0d 0a 20 | 20 28 73 65 74 21 20 40 |read).. | (set! @|
|00002d60| 72 65 61 64 2d 61 74 6f | 6d 0d 0a 09 28 6c 61 6d |read-ato|m...(lam|
|00002d70| 62 64 61 20 70 6f 72 74 | 0d 0a 09 20 20 28 6c 65 |bda port|... (le|
|00002d80| 74 2a 20 28 28 69 6e 70 | 75 74 20 28 69 66 20 28 |t* ((inp|ut (if (|
|00002d90| 6e 75 6c 6c 3f 20 70 6f | 72 74 29 20 28 63 75 72 |null? po|rt) (cur|
|00002da0| 72 65 6e 74 2d 69 6e 70 | 75 74 2d 70 6f 72 74 29 |rent-inp|ut-port)|
|00002db0| 20 28 63 61 72 20 70 6f | 72 74 29 29 29 0d 0a 09 | (car po|rt)))...|
|00002dc0| 09 20 28 66 69 72 73 74 | 20 28 67 65 74 2d 63 68 |. (first| (get-ch|
|00002dd0| 61 72 20 69 6e 70 75 74 | 29 29 29 0d 0a 09 20 20 |ar input|)))... |
|00002de0| 20 20 28 63 61 73 65 20 | 66 69 72 73 74 0d 0a 09 | (case |first...|
|00002df0| 20 20 20 20 20 20 28 28 | 23 5c 5b 20 23 5c 5d 20 | ((|#\[ #\] |
|00002e00| 23 5c 7b 20 23 5c 7d 20 | 23 5c 28 20 23 5c 29 20 |#\{ #\} |#\( #\) |
|00002e10| 23 5c 27 20 23 5c 60 29 | 0d 0a 09 20 20 20 20 20 |#\' #\`)|... |
|00002e20| 20 20 28 6c 69 73 74 20 | 28 6c 69 73 74 2d 3e 73 | (list |(list->s|
|00002e30| 79 6d 62 6f 6c 20 28 6c | 69 73 74 20 66 69 72 73 |ymbol (l|ist firs|
|00002e40| 74 29 29 29 29 0d 0a 09 | 20 20 20 20 20 20 28 28 |t))))...| ((|
|00002e50| 23 5c 22 29 20 28 6c 69 | 73 74 2d 3e 73 74 72 69 |#\") (li|st->stri|
|00002e60| 6e 67 20 28 64 65 6c 69 | 6d 62 79 20 66 69 72 73 |ng (deli|mby firs|
|00002e70| 74 20 69 6e 70 75 74 29 | 29 29 0d 0a 09 20 20 20 |t input)|))... |
|00002e80| 20 20 20 28 28 23 5c 7c | 29 20 28 6c 69 73 74 2d | ((#\||) (list-|
|00002e90| 3e 73 79 6d 62 6f 6c 20 | 28 64 65 6c 69 6d 62 79 |>symbol |(delimby|
|00002ea0| 20 66 69 72 73 74 20 69 | 6e 70 75 74 29 29 29 0d | first i|nput))).|
|00002eb0| 0a 09 20 20 20 20 20 20 | 28 28 23 5c 2c 29 20 28 |.. |((#\,) (|
|00002ec0| 6c 69 73 74 20 28 6c 69 | 73 74 2d 3e 73 79 6d 62 |list (li|st->symb|
|00002ed0| 6f 6c 0d 0a 09 09 09 20 | 20 20 20 20 28 63 6f 6e |ol..... | (con|
|00002ee0| 73 20 66 69 72 73 74 20 | 0d 0a 09 09 09 09 20 20 |s first |...... |
|00002ef0| 20 28 69 66 20 28 6d 65 | 6d 62 65 72 20 28 40 70 | (if (me|mber (@p|
|00002f00| 65 65 6b 2d 63 68 61 72 | 20 69 6e 70 75 74 29 20 |eek-char| input) |
|00002f10| 27 28 23 5c 40 20 23 5c | 2e 29 29 0d 0a 09 09 09 |'(#\@ #\|.)).....|
|00002f20| 09 20 20 20 20 20 20 20 | 28 6c 69 73 74 20 28 40 |. |(list (@|
|00002f30| 72 65 61 64 2d 63 68 61 | 72 20 69 6e 70 75 74 29 |read-cha|r input)|
|00002f40| 29 0d 0a 09 09 09 09 20 | 20 20 20 20 20 20 28 29 |)...... | ()|
|00002f50| 29 29 29 29 29 0d 0a 09 | 20 20 20 20 20 20 28 28 |)))))...| ((|
|00002f60| 23 5c 23 29 20 28 6c 65 | 74 20 28 28 6e 65 78 74 |#\#) (le|t ((next|
|00002f70| 20 28 63 68 61 72 2d 75 | 70 63 61 73 65 20 28 40 | (char-u|pcase (@|
|00002f80| 72 65 61 64 2d 63 68 61 | 72 20 69 6e 70 75 74 29 |read-cha|r input)|
|00002f90| 29 29 29 0d 0a 09 09 20 | 20 20 20 20 20 20 28 63 |))).... | (c|
|00002fa0| 61 73 65 20 6e 65 78 74 | 0d 0a 09 09 09 20 28 28 |ase next|..... ((|
|00002fb0| 23 5c 54 29 20 23 54 29 | 0d 0a 09 09 09 20 28 28 |#\T) #T)|..... ((|
|00002fc0| 23 5c 46 29 20 23 46 29 | 0d 0a 09 09 09 20 28 28 |#\F) #F)|..... ((|
|00002fd0| 23 5c 28 29 20 27 28 7c | 23 28 7c 29 29 0d 0a 09 |#\() '(||#(|))...|
|00002fe0| 09 09 20 28 28 23 5c 5c | 29 0d 0a 09 09 09 20 20 |.. ((#\\|)..... |
|00002ff0| 28 6c 65 74 2a 20 28 28 | 74 68 69 72 64 20 28 63 |(let* ((|third (c|
|00003000| 68 61 72 2d 75 70 63 61 | 73 65 20 28 40 72 65 61 |har-upca|se (@rea|
|00003010| 64 2d 63 68 61 72 20 69 | 6e 70 75 74 29 29 29 0d |d-char i|nput))).|
|00003020| 0a 09 09 09 09 20 28 61 | 74 6f 6d 20 28 6c 69 73 |..... (a|tom (lis|
|00003030| 74 2d 3e 73 74 72 69 6e | 67 20 28 6c 69 73 74 2a |t->strin|g (list*|
|00003040| 20 66 69 72 73 74 20 6e | 65 78 74 20 74 68 69 72 | first n|ext thir|
|00003050| 64 0d 0a 09 09 09 09 09 | 09 09 20 20 20 20 28 67 |d.......|.. (g|
|00003060| 65 74 2d 73 79 6d 62 6f | 6c 20 69 6e 70 75 74 29 |et-symbo|l input)|
|00003070| 29 29 29 0d 0a 09 09 09 | 09 20 28 63 68 61 72 20 |))).....|. (char |
|00003080| 28 61 73 73 6f 63 20 61 | 74 6f 6d 0d 0a 09 09 09 |(assoc a|tom.....|
|00003090| 09 09 20 20 20 20 20 20 | 28 6d 61 70 20 28 6c 61 |.. |(map (la|
|000030a0| 6d 62 64 61 20 28 6c 29 | 0d 0a 09 09 09 09 09 09 |mbda (l)|........|
|000030b0| 20 20 20 20 20 28 63 6f | 6e 73 20 28 63 64 72 20 | (co|ns (cdr |
|000030c0| 6c 29 20 28 63 61 72 20 | 6c 29 29 29 0d 0a 09 09 |l) (car |l)))....|
|000030d0| 09 09 09 09 20 20 20 73 | 70 65 63 63 68 61 72 73 |.... s|pecchars|
|000030e0| 29 29 29 29 0d 0a 09 09 | 09 20 20 20 20 28 69 66 |))))....|. (if|
|000030f0| 20 28 6e 75 6c 6c 3f 20 | 63 68 61 72 29 0d 0a 09 | (null? |char)...|
|00003100| 09 09 09 28 69 66 20 28 | 3d 20 28 73 74 72 69 6e |...(if (|= (strin|
|00003110| 67 2d 6c 65 6e 67 74 68 | 20 61 74 6f 6d 29 20 33 |g-length| atom) 3|
|00003120| 29 0d 0a 09 09 09 09 20 | 20 20 20 74 68 69 72 64 |)...... | third|
|00003130| 0d 0a 09 09 09 09 20 20 | 20 20 28 65 72 72 6f 72 |...... | (error|
|00003140| 20 22 49 6c 6c 65 67 61 | 6c 20 63 68 61 72 61 63 | "Illega|l charac|
|00003150| 74 65 72 20 63 6f 6e 73 | 74 61 6e 74 22 20 61 74 |ter cons|tant" at|
|00003160| 6f 6d 29 29 0d 0a 09 09 | 09 09 28 63 64 72 20 63 |om))....|..(cdr c|
|00003170| 68 61 72 29 29 29 29 0d | 0a 09 09 09 20 28 28 23 |har)))).|.... ((#|
|00003180| 5c 21 29 20 28 6c 69 73 | 74 2d 3e 73 79 6d 62 6f |\!) (lis|t->symbo|
|00003190| 6c 20 28 6c 69 73 74 2a | 20 66 69 72 73 74 20 6e |l (list*| first n|
|000031a0| 65 78 74 0d 0a 09 09 09 | 09 09 09 20 20 20 20 20 |ext.....|... |
|000031b0| 28 67 65 74 2d 73 79 6d | 62 6f 6c 20 69 6e 70 75 |(get-sym|bol inpu|
|000031c0| 74 29 29 29 29 0d 0a 09 | 09 09 20 28 65 6c 73 65 |t))))...|.. (else|
|000031d0| 20 28 40 75 6e 72 65 61 | 64 2d 63 68 61 72 20 69 | (@unrea|d-char i|
|000031e0| 6e 70 75 74 29 0d 0a 09 | 09 09 20 20 20 20 20 20 |nput)...|.. |
|000031f0| 20 28 67 65 74 2d 6e 75 | 6d 62 65 72 2d 70 72 65 | (get-nu|mber-pre|
|00003200| 66 69 78 65 64 20 31 30 | 20 69 6e 70 75 74 29 29 |fixed 10| input))|
|00003210| 29 29 29 0d 0a 09 20 20 | 20 20 20 20 28 65 6c 73 |)))... | (els|
|00003220| 65 20 28 69 66 20 28 40 | 65 6f 66 2d 6f 62 6a 65 |e (if (@|eof-obje|
|00003230| 63 74 3f 20 66 69 72 73 | 74 29 0d 0a 09 09 09 66 |ct? firs|t).....f|
|00003240| 69 72 73 74 0d 0a 09 09 | 09 28 6c 65 74 2a 20 28 |irst....|.(let* (|
|00003250| 28 61 74 6f 6d 20 28 6c | 69 73 74 2d 3e 73 74 72 |(atom (l|ist->str|
|00003260| 69 6e 67 0d 0a 09 09 09 | 09 20 20 20 20 20 20 20 |ing.....|. |
|00003270| 28 63 6f 6e 73 20 28 63 | 68 61 72 2d 75 70 63 61 |(cons (c|har-upca|
|00003280| 73 65 20 66 69 72 73 74 | 29 0d 0a 09 09 09 09 09 |se first|).......|
|00003290| 20 20 20 20 20 28 67 65 | 74 2d 73 79 6d 62 6f 6c | (ge|t-symbol|
|000032a0| 20 69 6e 70 75 74 29 29 | 29 29 0d 0a 09 09 09 20 | input))|))..... |
|000032b0| 20 20 20 20 20 20 28 6e | 75 6d 62 65 72 20 28 73 | (n|umber (s|
|000032c0| 74 72 69 6e 67 2d 3e 6e | 75 6d 62 65 72 20 61 74 |tring->n|umber at|
|000032d0| 6f 6d 29 29 29 0d 0a 09 | 09 09 20 20 28 63 6f 6e |om)))...|.. (con|
|000032e0| 64 20 28 28 6e 75 6d 62 | 65 72 3f 20 6e 75 6d 62 |d ((numb|er? numb|
|000032f0| 65 72 29 20 6e 75 6d 62 | 65 72 29 0d 0a 09 09 09 |er) numb|er).....|
|00003300| 09 28 28 65 71 75 61 6c | 3f 20 61 74 6f 6d 20 22 |.((equal|? atom "|
|00003310| 2e 22 29 20 27 28 7c 2e | 7c 29 29 0d 0a 09 09 09 |.") '(|.||)).....|
|00003320| 09 28 65 6c 73 65 20 28 | 73 74 72 69 6e 67 2d 3e |.(else (|string->|
|00003330| 73 79 6d 62 6f 6c 20 61 | 74 6f 6d 29 29 29 29 29 |symbol a|tom)))))|
|00003340| 29 29 29 29 29 0d 0a 20 | 20 28 73 65 74 21 20 40 |))))).. | (set! @|
|00003350| 65 6f 66 2d 6f 62 6a 65 | 63 74 3f 20 65 6f 66 2d |eof-obje|ct? eof-|
|00003360| 6f 62 6a 65 63 74 3f 29 | 0d 0a 20 20 28 73 65 74 |object?)|.. (set|
|00003370| 21 20 40 63 68 61 72 2d | 72 65 61 64 79 3f 20 63 |! @char-|ready? c|
|00003380| 68 61 72 2d 72 65 61 64 | 79 3f 29 0d 0a 20 20 28 |har-read|y?).. (|
|00003390| 73 65 74 21 20 40 70 65 | 65 6b 2d 63 68 61 72 20 |set! @pe|ek-char |
|000033a0| 70 65 65 6b 2d 63 68 61 | 72 29 0d 0a 20 20 28 73 |peek-cha|r).. (s|
|000033b0| 65 74 21 20 40 72 65 61 | 64 2d 63 68 61 72 20 72 |et! @rea|d-char r|
|000033c0| 65 61 64 2d 63 68 61 72 | 29 0d 0a 20 20 28 73 65 |ead-char|).. (se|
|000033d0| 74 21 20 40 72 65 61 64 | 2d 6c 69 6e 65 0d 0a 09 |t! @read|-line...|
|000033e0| 28 6c 61 6d 62 64 61 20 | 70 6f 72 74 0d 0a 09 20 |(lambda |port... |
|000033f0| 20 28 6c 65 74 20 28 28 | 69 6e 70 75 74 20 28 69 | (let ((|input (i|
|00003400| 66 20 28 6e 75 6c 6c 3f | 20 70 6f 72 74 29 20 28 |f (null?| port) (|
|00003410| 63 75 72 72 65 6e 74 2d | 69 6e 70 75 74 2d 70 6f |current-|input-po|
|00003420| 72 74 29 20 28 63 61 72 | 20 70 6f 72 74 29 29 29 |rt) (car| port)))|
|00003430| 29 0d 0a 09 20 20 20 20 | 28 64 6f 20 28 28 6c 20 |)... |(do ((l |
|00003440| 27 28 29 20 28 63 6f 6e | 73 20 63 68 61 72 20 6c |'() (con|s char l|
|00003450| 29 29 0d 0a 09 09 20 28 | 63 68 61 72 20 28 40 72 |)).... (|char (@r|
|00003460| 65 61 64 2d 63 68 61 72 | 20 69 6e 70 75 74 29 20 |ead-char| input) |
|00003470| 28 40 72 65 61 64 2d 63 | 68 61 72 20 69 6e 70 75 |(@read-c|har inpu|
|00003480| 74 29 29 29 0d 0a 09 09 | 28 28 6f 72 20 28 65 71 |t)))....|((or (eq|
|00003490| 75 61 6c 3f 20 63 68 61 | 72 20 23 5c 4e 45 57 4c |ual? cha|r #\NEWL|
|000034a0| 49 4e 45 29 0d 0a 09 09 | 20 20 20 20 20 28 65 71 |INE)....| (eq|
|000034b0| 75 61 6c 3f 20 63 68 61 | 72 20 23 5c 52 45 54 55 |ual? cha|r #\RETU|
|000034c0| 52 4e 29 0d 0a 09 09 20 | 20 20 20 20 28 40 65 6f |RN).... | (@eo|
|000034d0| 66 2d 6f 62 6a 65 63 74 | 3f 20 63 68 61 72 29 29 |f-object|? char))|
|000034e0| 0d 0a 09 09 20 28 69 66 | 20 28 61 6e 64 20 28 6e |.... (if| (and (n|
|000034f0| 75 6c 6c 3f 20 6c 29 20 | 28 40 65 6f 66 2d 6f 62 |ull? l) |(@eof-ob|
|00003500| 6a 65 63 74 3f 20 63 68 | 61 72 29 29 0d 0a 09 09 |ject? ch|ar))....|
|00003510| 20 20 20 20 20 63 68 61 | 72 0d 0a 09 09 20 20 20 | cha|r.... |
|00003520| 20 20 28 6c 69 73 74 2d | 3e 73 74 72 69 6e 67 20 | (list-|>string |
|00003530| 28 72 65 76 65 72 73 65 | 21 20 6c 29 29 29 29 29 |(reverse|! l)))))|
|00003540| 29 29 29 0d 0a 20 20 28 | 73 65 74 21 20 40 75 6e |))).. (|set! @un|
|00003550| 72 65 61 64 2d 63 68 61 | 72 20 75 6e 72 65 61 64 |read-cha|r unread|
|00003560| 2d 63 68 61 72 29 0d 0a | 29 0d 0a 7d 0d 0a 0d 0a |-char)..|)..}....|
|00003570| 5c 73 65 63 74 69 6f 6e | 7b 4f 6e 20 4e 75 6d 62 |\section|{On Numb|
|00003580| 65 72 73 20 61 6e 64 20 | 53 74 72 69 6e 67 73 7d |ers and |Strings}|
|00003590| 0d 0a 48 65 72 65 20 77 | 65 20 64 65 76 69 73 65 |..Here w|e devise|
|000035a0| 20 73 6f 6d 65 20 61 75 | 78 69 6c 69 61 72 79 20 | some au|xiliary |
|000035b0| 63 6f 64 65 20 74 68 61 | 74 20 77 69 6c 6c 20 63 |code tha|t will c|
|000035c0| 6f 6e 76 65 72 74 20 61 | 20 6e 75 6d 62 65 72 20 |onvert a| number |
|000035d0| 74 6f 20 61 20 73 74 72 | 69 6e 67 0d 0a 61 6e 64 |to a str|ing..and|
|000035e0| 20 76 69 63 65 20 76 65 | 72 73 61 2e 20 54 68 65 | vice ve|rsa. The|
|000035f0| 73 65 20 74 77 6f 20 72 | 6f 75 74 69 6e 65 73 20 |se two r|outines |
|00003600| 61 72 65 20 7c 6e 75 6d | 62 65 72 2d 3e 73 74 72 |are |num|ber->str|
|00003610| 69 6e 67 7c 20 61 6e 64 | 20 7c 73 74 72 69 6e 67 |ing| and| |string|
|00003620| 2d 3e 6e 75 6d 62 65 72 | 7c 2e 0d 0a 54 68 65 20 |->number||...The |
|00003630| 73 74 61 6e 64 61 72 64 | 20 72 65 71 75 69 72 65 |standard| require|
|00003640| 73 20 74 68 61 74 20 7c | 28 73 74 72 69 6e 67 2d |s that ||(string-|
|00003650| 3e 6e 75 6d 62 65 72 7c | 20 7c 28 6e 75 6d 62 65 |>number|| |(numbe|
|00003660| 72 2d 3e 73 74 72 69 6e | 67 20 6e 29 29 7c 20 62 |r->strin|g n))| b|
|00003670| 65 20 7c 6e 7c 0d 0a 66 | 6f 72 20 61 6c 6c 20 6e |e |n|..f|or all n|
|00003680| 75 6d 65 72 69 63 61 6c | 20 7c 6e 7c 2c 20 62 75 |umerical| |n|, bu|
|00003690| 74 20 74 68 65 20 72 65 | 76 65 72 73 65 20 63 6f |t the re|verse co|
|000036a0| 6d 70 6f 73 69 74 69 6f | 6e 20 64 6f 65 73 20 6e |mpositio|n does n|
|000036b0| 6f 74 20 68 61 76 65 20 | 74 68 65 20 73 61 6d 65 |ot have |the same|
|000036c0| 0d 0a 70 72 6f 70 65 72 | 74 79 2e 0d 0a 0d 0a 54 |..proper|ty.....T|
|000036d0| 68 65 20 63 6f 64 65 20 | 68 61 6e 64 6c 65 73 20 |he code |handles |
|000036e0| 69 6e 20 73 63 68 65 6d | 65 20 74 68 65 20 73 70 |in schem|e the sp|
|000036f0| 65 63 69 61 6c 20 63 61 | 73 65 20 6f 66 20 69 6e |ecial ca|se of in|
|00003700| 74 65 67 65 72 73 2c 20 | 61 73 20 74 68 65 79 20 |tegers, |as they |
|00003710| 63 61 6e 20 6f 6e 6c 79 | 0d 0a 62 65 20 64 65 61 |can only|..be dea|
|00003720| 6c 74 20 77 69 74 68 20 | 74 68 72 6f 75 67 68 20 |lt with |through |
|00003730| 7c 62 69 67 6e 75 6d 7c | 20 6f 70 65 72 61 74 69 ||bignum|| operati|
|00003740| 6f 6e 73 2c 20 77 68 69 | 63 68 20 61 72 65 20 6e |ons, whi|ch are n|
|00003750| 6f 74 20 61 70 70 72 6f | 70 72 69 61 74 65 6c 79 |ot appro|priately|
|00003760| 0d 0a 63 61 6c 6c 61 62 | 6c 65 20 66 72 6f 6d 20 |..callab|le from |
|00003770| 74 68 65 20 43 20 6b 65 | 72 6e 65 6c 2e 20 46 6c |the C ke|rnel. Fl|
|00003780| 6f 61 74 69 6e 67 2d 70 | 6f 69 6e 74 20 63 6f 6e |oating-p|oint con|
|00003790| 76 65 72 73 69 6f 6e 2c | 20 74 68 6f 75 67 68 2c |version,| though,|
|000037a0| 20 69 73 20 64 6f 6e 65 | 0d 0a 62 79 20 63 61 6c | is done|..by cal|
|000037b0| 6c 73 20 74 6f 20 7c 73 | 70 72 69 6e 74 66 7c 20 |ls to |s|printf| |
|000037c0| 61 6e 64 20 7c 73 73 63 | 61 6e 66 7c 2e 20 54 68 |and |ssc|anf|. Th|
|000037d0| 65 73 65 20 68 61 73 20 | 74 68 65 20 61 64 76 61 |ese has |the adva|
|000037e0| 6e 74 61 67 65 20 6f 66 | 20 62 65 69 6e 67 0d 0a |ntage of| being..|
|000037f0| 68 69 67 68 6c 79 20 73 | 74 61 6e 64 61 72 64 2c |highly s|tandard,|
|00003800| 20 61 73 20 77 65 6c 6c | 20 61 73 20 72 65 71 75 | as well| as requ|
|00003810| 69 72 69 6e 67 20 6c 69 | 74 74 6c 65 20 65 66 66 |iring li|ttle eff|
|00003820| 6f 72 74 20 66 72 6f 6d | 20 6d 79 73 65 6c 66 5c |ort from| myself\|
|00003830| 6c 64 6f 74 73 0d 0a 0d | 0a 7b 5c 66 6f 6f 74 6e |ldots...|.{\footn|
|00003840| 6f 74 65 73 69 7a 65 0d | 0a 28 6c 65 74 72 65 63 |otesize.|.(letrec|
|00003850| 20 28 28 30 2d 68 65 78 | 61 20 28 63 68 61 72 2d | ((0-hex|a (char-|
|00003860| 3e 69 6e 74 65 67 65 72 | 20 23 5c 30 29 29 0d 0a |>integer| #\0))..|
|00003870| 09 20 28 31 30 2d 68 65 | 78 61 20 28 2d 20 28 63 |. (10-he|xa (- (c|
|00003880| 68 61 72 2d 3e 69 6e 74 | 65 67 65 72 20 23 5c 41 |har->int|eger #\A|
|00003890| 29 20 31 30 29 29 0d 0a | 09 20 28 67 65 74 2d 62 |) 10))..|. (get-b|
|000038a0| 61 73 65 20 28 6c 61 6d | 62 64 61 20 28 61 72 67 |ase (lam|bda (arg|
|000038b0| 73 29 0d 0a 09 09 20 20 | 20 20 20 28 69 66 20 28 |s).... | (if (|
|000038c0| 6e 75 6c 6c 3f 20 28 63 | 64 72 20 61 72 67 73 29 |null? (c|dr args)|
|000038d0| 29 0d 0a 09 09 09 20 28 | 63 61 73 65 20 28 63 61 |)..... (|case (ca|
|000038e0| 72 20 61 72 67 73 29 0d | 0a 09 09 09 20 20 20 28 |r args).|.... (|
|000038f0| 28 29 20 31 30 29 0d 0a | 09 09 09 20 20 20 28 28 |() 10)..|... ((|
|00003900| 32 20 38 20 31 30 20 31 | 36 29 20 28 63 61 72 20 |2 8 10 1|6) (car |
|00003910| 61 72 67 73 29 29 0d 0a | 09 09 09 20 20 20 28 65 |args))..|... (e|
|00003920| 6c 73 65 20 28 65 72 72 | 6f 72 20 22 49 6e 76 61 |lse (err|or "Inva|
|00003930| 6c 69 64 20 62 61 73 65 | 22 20 28 63 61 72 20 61 |lid base|" (car a|
|00003940| 72 67 73 29 29 29 29 0d | 0a 09 09 09 20 28 65 72 |rgs)))).|.... (er|
|00003950| 72 6f 72 20 22 47 69 6d | 6d 65 20 32 20 61 72 67 |ror "Gim|me 2 arg|
|00003960| 73 2c 20 70 6c 65 61 73 | 65 22 20 61 72 67 73 29 |s, pleas|e" args)|
|00003970| 29 29 29 0d 0a 09 20 28 | 69 6e 74 65 67 65 72 2d |)))... (|integer-|
|00003980| 3e 73 74 72 69 6e 67 0d | 0a 09 20 20 20 28 6c 61 |>string.|.. (la|
|00003990| 6d 62 64 61 20 28 6e 75 | 6d 20 62 61 73 65 29 0d |mbda (nu|m base).|
|000039a0| 0a 09 20 20 20 20 20 28 | 64 65 66 69 6e 65 20 28 |.. (|define (|
|000039b0| 69 6e 74 65 67 65 72 2d | 3e 6c 69 73 74 20 6e 75 |integer-|>list nu|
|000039c0| 6d 29 0d 0a 09 20 20 20 | 20 20 20 20 28 64 6f 20 |m)... | (do |
|000039d0| 28 28 6e 75 6d 20 6e 75 | 6d 20 28 71 75 6f 74 69 |((num nu|m (quoti|
|000039e0| 65 6e 74 20 6e 75 6d 20 | 62 61 73 65 29 29 0d 0a |ent num |base))..|
|000039f0| 09 09 20 20 20 20 28 72 | 65 73 75 6c 74 20 27 28 |.. (r|esult '(|
|00003a00| 29 20 28 6c 65 74 20 28 | 28 64 69 67 69 74 20 28 |) (let (|(digit (|
|00003a10| 72 65 6d 61 69 6e 64 65 | 72 20 6e 75 6d 20 62 61 |remainde|r num ba|
|00003a20| 73 65 29 29 29 0d 0a 09 | 09 09 09 20 20 28 63 6f |se)))...|... (co|
|00003a30| 6e 73 20 28 69 6e 74 65 | 67 65 72 2d 3e 63 68 61 |ns (inte|ger->cha|
|00003a40| 72 20 28 2b 20 64 69 67 | 69 74 20 28 69 66 20 28 |r (+ dig|it (if (|
|00003a50| 3e 20 64 69 67 69 74 20 | 39 29 0d 0a 09 09 09 09 |> digit |9)......|
|00003a60| 09 09 09 09 20 20 20 20 | 31 30 2d 68 65 78 61 0d |.... |10-hexa.|
|00003a70| 0a 09 09 09 09 09 09 09 | 09 20 20 20 20 30 2d 68 |........|. 0-h|
|00003a80| 65 78 61 29 29 29 0d 0a | 09 09 09 09 09 72 65 73 |exa)))..|.....res|
|00003a90| 75 6c 74 29 29 29 29 0d | 0a 09 09 20 20 20 28 28 |ult)))).|... ((|
|00003aa0| 7a 65 72 6f 3f 20 6e 75 | 6d 29 20 72 65 73 75 6c |zero? nu|m) resul|
|00003ab0| 74 29 29 29 0d 0a 09 20 | 20 20 20 20 28 63 6f 6e |t)))... | (con|
|00003ac0| 64 20 28 28 6e 65 67 61 | 74 69 76 65 3f 20 6e 75 |d ((nega|tive? nu|
|00003ad0| 6d 29 0d 0a 09 09 20 20 | 20 20 28 73 74 72 69 6e |m).... | (strin|
|00003ae0| 67 2d 61 70 70 65 6e 64 | 20 22 2d 22 20 28 69 6e |g-append| "-" (in|
|00003af0| 74 65 67 65 72 2d 3e 73 | 74 72 69 6e 67 20 28 2d |teger->s|tring (-|
|00003b00| 20 6e 75 6d 29 20 62 61 | 73 65 29 29 29 0d 0a 09 | num) ba|se)))...|
|00003b10| 09 20 20 20 28 28 7a 65 | 72 6f 3f 20 6e 75 6d 29 |. ((ze|ro? num)|
|00003b20| 20 22 30 22 29 0d 0a 09 | 09 20 20 20 28 65 6c 73 | "0")...|. (els|
|00003b30| 65 20 28 6c 69 73 74 2d | 3e 73 74 72 69 6e 67 20 |e (list-|>string |
|00003b40| 28 69 6e 74 65 67 65 72 | 2d 3e 6c 69 73 74 20 6e |(integer|->list n|
|00003b50| 75 6d 29 29 29 29 29 29 | 0d 0a 09 20 28 6c 69 73 |um))))))|... (lis|
|00003b60| 74 2d 3e 69 6e 74 65 67 | 65 72 0d 0a 09 20 20 20 |t->integ|er... |
|00003b70| 28 6c 61 6d 62 64 61 20 | 28 6c 79 73 74 20 62 61 |(lambda |(lyst ba|
|00003b80| 73 65 29 0d 0a 09 20 20 | 20 20 20 28 63 61 6c 6c |se)... | (call|
|00003b90| 2d 77 69 74 68 2d 63 75 | 72 72 65 6e 74 2d 63 6f |-with-cu|rrent-co|
|00003ba0| 6e 74 69 6e 75 61 74 69 | 6f 6e 0d 0a 09 20 20 20 |ntinuati|on... |
|00003bb0| 20 20 20 20 28 6c 61 6d | 62 64 61 20 28 63 6f 6e | (lam|bda (con|
|00003bc0| 74 29 0d 0a 09 09 20 28 | 6c 65 74 20 28 28 6e 65 |t).... (|let ((ne|
|00003bd0| 67 61 74 69 76 65 20 28 | 65 71 75 61 6c 3f 20 28 |gative (|equal? (|
|00003be0| 63 61 72 20 6c 79 73 74 | 29 20 23 5c 2d 29 29 29 |car lyst|) #\-)))|
|00003bf0| 0d 0a 09 09 20 20 20 28 | 64 6f 20 28 28 6c 79 73 |.... (|do ((lys|
|00003c00| 74 20 28 69 66 20 6e 65 | 67 61 74 69 76 65 20 28 |t (if ne|gative (|
|00003c10| 63 64 72 20 6c 79 73 74 | 29 20 6c 79 73 74 29 20 |cdr lyst|) lyst) |
|00003c20| 28 63 64 72 20 6c 79 73 | 74 29 29 0d 0a 09 09 09 |(cdr lys|t)).....|
|00003c30| 28 72 65 73 75 6c 74 20 | 30 20 28 2b 20 28 2a 20 |(result |0 (+ (* |
|00003c40| 72 65 73 75 6c 74 20 62 | 61 73 65 29 0d 0a 09 09 |result b|ase)....|
|00003c50| 09 09 20 20 20 20 20 28 | 6c 65 74 2a 20 28 28 63 |.. (|let* ((c|
|00003c60| 20 28 63 68 61 72 2d 75 | 70 63 61 73 65 20 28 63 | (char-u|pcase (c|
|00003c70| 61 72 20 6c 79 73 74 29 | 29 29 0d 0a 09 09 09 09 |ar lyst)|))......|
|00003c80| 09 20 20 20 20 28 68 65 | 61 64 20 28 63 6f 6e 64 |. (he|ad (cond|
|00003c90| 20 28 28 63 68 61 72 3e | 3d 3f 20 63 20 23 5c 41 | ((char>|=? c #\A|
|00003ca0| 29 0d 0a 09 09 09 09 09 | 09 09 20 28 2d 20 28 63 |).......|.. (- (c|
|00003cb0| 68 61 72 2d 3e 69 6e 74 | 65 67 65 72 20 63 29 0d |har->int|eger c).|
|00003cc0| 0a 09 09 09 09 09 09 09 | 20 20 20 20 31 30 2d 68 |........| 10-h|
|00003cd0| 65 78 61 29 29 0d 0a 09 | 09 09 09 09 09 09 28 28 |exa))...|......((|
|00003ce0| 63 68 61 72 3e 3d 3f 20 | 63 20 23 5c 30 29 0d 0a |char>=? |c #\0)..|
|00003cf0| 09 09 09 09 09 09 09 20 | 28 2d 20 28 63 68 61 72 |....... |(- (char|
|00003d00| 2d 3e 69 6e 74 65 67 65 | 72 20 63 29 0d 0a 09 09 |->intege|r c)....|
|00003d10| 09 09 09 09 09 20 20 20 | 20 30 2d 68 65 78 61 29 |..... | 0-hexa)|
|00003d20| 29 0d 0a 09 09 09 09 09 | 09 09 28 65 6c 73 65 20 |).......|..(else |
|00003d30| 28 63 6f 6e 74 20 23 46 | 29 29 29 29 29 0d 0a 09 |(cont #F|)))))...|
|00003d40| 09 09 09 20 20 20 20 20 | 20 20 28 69 66 20 28 3c |... | (if (<|
|00003d50| 20 68 65 61 64 20 62 61 | 73 65 29 0d 0a 09 09 09 | head ba|se).....|
|00003d60| 09 09 20 20 20 68 65 61 | 64 0d 0a 09 09 09 09 09 |.. hea|d.......|
|00003d70| 20 20 20 28 63 6f 6e 74 | 20 23 46 29 29 29 29 29 | (cont| #F)))))|
|00003d80| 29 0d 0a 09 09 20 20 20 | 20 20 20 20 28 28 6e 75 |).... | ((nu|
|00003d90| 6c 6c 3f 20 6c 79 73 74 | 29 20 28 69 66 20 6e 65 |ll? lyst|) (if ne|
|00003da0| 67 61 74 69 76 65 20 28 | 2d 20 72 65 73 75 6c 74 |gative (|- result|
|00003db0| 29 20 72 65 73 75 6c 74 | 29 29 29 29 29 29 29 29 |) result|))))))))|
|00003dc0| 0d 0a 09 20 29 0d 0a 20 | 20 28 73 65 74 21 20 6e |... ).. | (set! n|
|00003dd0| 75 6d 62 65 72 2d 3e 73 | 74 72 69 6e 67 0d 0a 09 |umber->s|tring...|
|00003de0| 28 6c 61 6d 62 64 61 20 | 28 6e 75 6d 20 2e 20 61 |(lambda |(num . a|
|00003df0| 72 67 73 29 0d 0a 09 20 | 20 28 6c 65 74 20 28 28 |rgs)... | (let ((|
|00003e00| 62 61 73 65 20 28 67 65 | 74 2d 62 61 73 65 20 61 |base (ge|t-base a|
|00003e10| 72 67 73 29 29 29 0d 0a | 09 20 20 20 20 28 63 6f |rgs)))..|. (co|
|00003e20| 6e 64 20 28 28 69 6e 74 | 65 67 65 72 3f 20 6e 75 |nd ((int|eger? nu|
|00003e30| 6d 29 20 28 69 6e 74 65 | 67 65 72 2d 3e 73 74 72 |m) (inte|ger->str|
|00003e40| 69 6e 67 20 6e 75 6d 20 | 62 61 73 65 29 29 0d 0a |ing num |base))..|
|00003e50| 09 09 20 20 28 28 6e 75 | 6d 62 65 72 3f 20 6e 75 |.. ((nu|mber? nu|
|00003e60| 6d 29 20 28 69 66 20 28 | 3d 20 62 61 73 65 20 31 |m) (if (|= base 1|
|00003e70| 30 29 0d 0a 09 09 09 09 | 20 20 20 20 20 28 73 70 |0)......| (sp|
|00003e80| 72 69 6e 74 66 20 22 25 | 2e 31 36 67 22 20 6e 75 |rintf "%|.16g" nu|
|00003e90| 6d 29 0d 0a 09 09 09 09 | 20 20 20 20 20 28 65 72 |m)......| (er|
|00003ea0| 72 6f 72 20 22 49 6e 76 | 61 6c 69 64 20 62 61 73 |ror "Inv|alid bas|
|00003eb0| 65 22 20 62 61 73 65 29 | 29 29 0d 0a 09 09 20 20 |e" base)|)).... |
|00003ec0| 28 65 6c 73 65 20 28 65 | 72 72 6f 72 20 22 41 72 |(else (e|rror "Ar|
|00003ed0| 67 75 6d 65 6e 74 20 6d | 75 73 74 20 62 65 20 6e |gument m|ust be n|
|00003ee0| 75 6d 62 65 72 22 20 6e | 75 6d 29 29 29 29 29 29 |umber" n|um))))))|
|00003ef0| 0d 0a 20 20 28 73 65 74 | 21 20 73 74 72 69 6e 67 |.. (set|! string|
|00003f00| 2d 3e 6e 75 6d 62 65 72 | 0d 0a 09 28 6c 61 6d 62 |->number|...(lamb|
|00003f10| 64 61 20 28 73 74 72 20 | 2e 20 61 72 67 73 29 0d |da (str |. args).|
|00003f20| 0a 09 20 20 28 6c 65 74 | 2a 20 28 28 62 61 73 65 |.. (let|* ((base|
|00003f30| 20 28 67 65 74 2d 62 61 | 73 65 20 61 72 67 73 29 | (get-ba|se args)|
|00003f40| 29 0d 0a 09 09 20 28 66 | 69 72 73 74 2d 73 68 6f |).... (f|irst-sho|
|00003f50| 74 20 28 6c 69 73 74 2d | 3e 69 6e 74 65 67 65 72 |t (list-|>integer|
|00003f60| 20 28 73 74 72 69 6e 67 | 2d 3e 6c 69 73 74 20 73 | (string|->list s|
|00003f70| 74 72 29 20 62 61 73 65 | 29 29 29 0d 0a 09 20 20 |tr) base|)))... |
|00003f80| 20 20 28 69 66 20 28 61 | 6e 64 20 28 69 6e 74 65 | (if (a|nd (inte|
|00003f90| 67 65 72 3f 20 66 69 72 | 73 74 2d 73 68 6f 74 29 |ger? fir|st-shot)|
|00003fa0| 20 28 6e 6f 74 20 28 65 | 71 75 61 6c 3f 20 73 74 | (not (e|qual? st|
|00003fb0| 72 20 22 2d 22 29 29 29 | 0d 0a 09 09 66 69 72 73 |r "-")))|....firs|
|00003fc0| 74 2d 73 68 6f 74 0d 0a | 09 09 28 69 66 20 28 3d |t-shot..|..(if (=|
|00003fd0| 20 62 61 73 65 20 31 30 | 29 0d 0a 09 09 20 20 20 | base 10|).... |
|00003fe0| 20 28 6c 65 74 20 28 28 | 73 65 63 6f 6e 64 2d 73 | (let ((|second-s|
|00003ff0| 68 6f 74 20 28 73 73 63 | 61 6e 66 20 73 74 72 20 |hot (ssc|anf str |
|00004000| 22 25 6c 67 25 63 22 29 | 29 29 0d 0a 09 09 20 20 |"%lg%c")|)).... |
|00004010| 20 20 20 20 28 69 66 20 | 28 3d 20 28 6c 65 6e 67 | (if |(= (leng|
|00004020| 74 68 20 73 65 63 6f 6e | 64 2d 73 68 6f 74 29 20 |th secon|d-shot) |
|00004030| 31 29 0d 0a 09 09 09 20 | 20 28 63 61 72 20 73 65 |1)..... | (car se|
|00004040| 63 6f 6e 64 2d 73 68 6f | 74 29 0d 0a 09 09 09 20 |cond-sho|t)..... |
|00004050| 20 23 46 29 29 0d 0a 09 | 09 20 20 20 20 23 46 29 | #F))...|. #F)|
|00004060| 29 29 29 29 0d 0a 29 0d | 0a 7d 0d 0a 0d 0a 5c 73 |))))..).|.}....\s|
|00004070| 65 63 74 69 6f 6e 7b 54 | 65 73 74 69 6e 67 7d 0d |ection{T|esting}.|
|00004080| 0a 41 6e 20 69 6d 70 6f | 72 74 61 6e 74 20 73 74 |.An impo|rtant st|
|00004090| 65 70 20 69 6e 20 64 65 | 76 65 6c 6f 70 6d 65 6e |ep in de|velopmen|
|000040a0| 74 20 77 61 73 20 74 6f | 20 62 65 20 73 75 72 65 |t was to| be sure|
|000040b0| 20 74 68 65 20 72 65 70 | 6c 61 63 65 6d 65 6e 74 | the rep|lacement|
|000040c0| 20 72 6f 75 74 69 6e 65 | 73 0d 0a 77 65 72 65 20 | routine|s..were |
|000040d0| 69 6e 20 61 6c 6c 20 77 | 61 79 73 20 73 69 6d 69 |in all w|ays simi|
|000040e0| 6c 61 72 20 74 6f 20 74 | 68 65 20 70 72 65 76 69 |lar to t|he previ|
|000040f0| 6f 75 73 20 6f 6e 65 73 | 2e 20 46 6f 72 20 74 68 |ous ones|. For th|
|00004100| 69 73 20 72 65 61 73 6f | 6e 2c 20 74 68 69 73 20 |is reaso|n, this |
|00004110| 70 69 65 63 65 0d 0a 6f | 66 20 63 6f 64 65 20 77 |piece..o|f code w|
|00004120| 61 73 20 77 72 69 74 74 | 65 6e 2e 20 4f 6e 65 20 |as writt|en. One |
|00004130| 68 61 6e 64 73 20 69 74 | 20 74 77 6f 20 70 72 6f |hands it| two pro|
|00004140| 63 65 64 75 72 65 73 20 | 28 61 20 72 65 61 64 65 |cedures |(a reade|
|00004150| 72 20 61 6e 64 20 61 20 | 77 72 69 74 65 72 29 0d |r and a |writer).|
|00004160| 0a 61 6e 64 20 74 77 6f | 20 66 69 6c 65 20 6e 61 |.and two| file na|
|00004170| 6d 65 73 20 28 61 6e 20 | 69 6e 70 75 74 20 61 6e |mes (an |input an|
|00004180| 64 20 61 6e 20 6f 75 74 | 70 75 74 29 2e 20 54 68 |d an out|put). Th|
|00004190| 65 20 74 65 73 74 65 72 | 20 77 69 6c 6c 20 72 65 |e tester| will re|
|000041a0| 70 65 61 74 65 64 6c 79 | 0d 0a 72 65 61 64 20 61 |peatedly|..read a|
|000041b0| 6e 20 69 74 65 6d 20 77 | 69 74 68 20 74 68 65 20 |n item w|ith the |
|000041c0| 72 65 61 64 65 72 20 61 | 6e 64 20 77 72 69 74 65 |reader a|nd write|
|000041d0| 20 69 74 20 62 61 63 6b | 20 77 69 74 68 20 74 68 | it back| with th|
|000041e0| 65 20 77 72 69 74 65 72 | 2e 0d 0a 7c 72 65 61 64 |e writer|...|read|
|000041f0| 2d 61 74 6f 6d 7c 2c 20 | 66 6f 72 20 69 6e 73 74 |-atom|, |for inst|
|00004200| 61 6e 63 65 2c 20 77 61 | 73 20 74 65 73 74 65 64 |ance, wa|s tested|
|00004210| 20 6f 6e 20 69 74 73 65 | 6c 66 20 77 69 74 68 5c | on itse|lf with\|
|00004220| 5c 0d 0a 5c 62 65 67 69 | 6e 7b 76 65 72 62 61 74 |\..\begi|n{verbat|
|00004230| 69 6d 7d 0d 0a 20 20 20 | 20 20 20 20 20 28 74 65 |im}.. | (te|
|00004240| 73 74 20 72 65 61 64 2d | 61 74 6f 6d 20 77 72 69 |st read-|atom wri|
|00004250| 74 65 20 22 73 6f 75 72 | 63 65 73 2e 73 2f 6e 65 |te "sour|ces.s/ne|
|00004260| 77 69 6f 2e 73 77 22 20 | 22 6f 6c 64 22 29 0d 0a |wio.sw" |"old")..|
|00004270| 20 20 20 20 20 20 20 20 | 28 74 65 73 74 20 40 72 | |(test @r|
|00004280| 65 61 64 2d 61 74 6f 6d | 20 77 72 69 74 65 20 22 |ead-atom| write "|
|00004290| 73 6f 75 72 63 65 73 2e | 73 2f 6e 65 77 69 6f 2e |sources.|s/newio.|
|000042a0| 73 77 22 20 22 6e 65 77 | 22 29 0d 0a 20 20 20 20 |sw" "new|").. |
|000042b0| 20 20 20 20 28 64 6f 73 | 2d 63 61 6c 6c 20 22 22 | (dos|-call ""|
|000042c0| 20 22 66 63 20 6f 6c 64 | 20 6e 65 77 20 7c 7c 20 | "fc old| new || |
|000042d0| 6d 6f 72 65 22 29 0d 0a | 5c 65 6e 64 7b 76 65 72 |more")..|\end{ver|
|000042e0| 62 61 74 69 6d 7d 0d 0a | 0d 0a 28 64 65 66 69 6e |batim}..|..(defin|
|000042f0| 65 20 28 74 65 73 74 20 | 72 65 61 64 65 72 20 77 |e (test |reader w|
|00004300| 72 69 74 65 72 20 69 6e | 20 6f 75 74 29 0d 0a 20 |riter in| out).. |
|00004310| 20 28 64 65 66 69 6e 65 | 20 28 6d 6f 76 65 20 69 | (define| (move i|
|00004320| 20 6f 29 0d 0a 20 20 20 | 20 28 6c 65 74 20 28 28 | o).. | (let ((|
|00004330| 61 20 28 72 65 61 64 65 | 72 20 69 29 29 29 0d 0a |a (reade|r i)))..|
|00004340| 20 20 20 20 20 20 28 77 | 68 65 6e 20 28 6e 6f 74 | (w|hen (not|
|00004350| 20 28 40 65 6f 66 2d 6f | 62 6a 65 63 74 3f 20 61 | (@eof-o|bject? a|
|00004360| 29 29 0d 0a 09 20 20 20 | 20 28 77 72 69 74 65 72 |))... | (writer|
|00004370| 20 61 20 6f 29 0d 0a 09 | 20 20 20 20 28 6d 6f 76 | a o)...| (mov|
|00004380| 65 20 69 20 6f 29 29 29 | 29 0d 0a 20 20 28 6c 65 |e i o)))|).. (le|
|00004390| 74 20 28 28 69 20 28 6f | 70 65 6e 2d 69 6e 70 75 |t ((i (o|pen-inpu|
|000043a0| 74 2d 66 69 6c 65 20 69 | 6e 29 29 0d 0a 09 28 6f |t-file i|n))...(o|
|000043b0| 20 28 6f 70 65 6e 2d 6f | 75 74 70 75 74 2d 66 69 | (open-o|utput-fi|
|000043c0| 6c 65 20 6f 75 74 29 29 | 29 0d 0a 20 20 20 20 28 |le out))|).. (|
|000043d0| 6d 6f 76 65 20 69 20 6f | 29 0d 0a 20 20 20 20 28 |move i o|).. (|
|000043e0| 63 6c 6f 73 65 2d 69 6e | 70 75 74 2d 70 6f 72 74 |close-in|put-port|
|000043f0| 20 69 29 0d 0a 20 20 20 | 20 28 63 6c 6f 73 65 2d | i).. | (close-|
|00004400| 6f 75 74 70 75 74 2d 70 | 6f 72 74 20 6f 29 29 29 |output-p|ort o)))|
|00004410| 0d 0a 0d 0a 5c 73 65 63 | 74 69 6f 6e 7b 49 73 20 |....\sec|tion{Is |
|00004420| 69 74 20 77 6f 72 74 68 | 20 69 74 3f 7d 0d 0a 4e |it worth| it?}..N|
|00004430| 6f 20 64 65 66 69 6e 69 | 74 65 20 61 6e 73 77 65 |o defini|te answe|
|00004440| 72 20 63 61 6e 20 62 65 | 20 67 69 76 65 6e 20 74 |r can be| given t|
|00004450| 6f 20 74 68 69 73 20 71 | 75 65 73 74 69 6f 6e 2e |o this q|uestion.|
|00004460| 20 54 68 65 20 61 6c 67 | 6f 72 69 74 68 6d 73 0d | The alg|orithms.|
|00004470| 0a 64 65 63 72 69 62 65 | 64 20 68 61 76 65 20 74 |.decribe|d have t|
|00004480| 68 65 20 73 61 6d 65 20 | 61 73 79 6d 70 74 6f 74 |he same |asymptot|
|00004490| 69 63 20 62 65 68 61 76 | 69 6f 75 72 20 61 73 20 |ic behav|iour as |
|000044a0| 74 68 65 20 70 72 65 76 | 69 6f 75 73 20 7c 2e 41 |the prev|ious |.A|
|000044b0| 53 4d 7c 20 63 6f 64 65 | 2e 0d 0a 54 68 65 79 20 |SM| code|...They |
|000044c0| 64 6f 2c 20 74 68 6f 75 | 67 68 2c 20 72 65 71 75 |do, thou|gh, requ|
|000044d0| 69 72 65 20 73 69 67 6e | 69 66 69 63 61 6e 74 20 |ire sign|ificant |
|000044e0| 61 6d 6f 75 6e 74 73 20 | 6f 66 20 74 65 6d 70 6f |amounts |of tempo|
|000044f0| 72 61 72 79 20 73 74 6f | 72 61 67 65 0d 0a 61 6e |rary sto|rage..an|
|00004500| 64 20 74 68 75 73 20 73 | 74 72 61 69 6e 20 73 6f |d thus s|train so|
|00004510| 6d 65 77 68 61 74 20 74 | 68 65 20 67 61 72 62 61 |mewhat t|he garba|
|00004520| 67 65 20 63 6f 6c 6c 65 | 63 74 6f 72 2e 20 50 65 |ge colle|ctor. Pe|
|00004530| 72 66 6f 72 6d 61 6e 63 | 65 20 63 6f 75 6c 64 20 |rformanc|e could |
|00004540| 62 65 0d 0a 65 6e 68 61 | 6e 63 65 64 20 6f 6e 6c |be..enha|nced onl|
|00004550| 79 20 61 74 20 74 68 65 | 20 70 72 69 63 65 20 6f |y at the| price o|
|00004560| 66 20 72 65 2d 63 6f 64 | 69 6e 67 20 73 69 67 6e |f re-cod|ing sign|
|00004570| 69 66 69 63 61 6e 74 20 | 61 6d 6f 75 6e 74 73 20 |ificant |amounts |
|00004580| 6f 66 20 63 6f 64 65 2c | 0d 0a 6c 6f 73 69 6e 67 |of code,|..losing|
|00004590| 20 74 68 65 20 61 64 76 | 61 6e 74 61 67 65 73 20 | the adv|antages |
|000045a0| 6f 66 20 74 68 65 73 65 | 20 73 6d 61 6c 6c 2c 20 |of these| small, |
|000045b0| 68 69 67 68 6c 79 20 6d | 6f 64 75 6c 61 72 20 72 |highly m|odular r|
|000045c0| 6f 75 74 69 6e 65 73 2e | 0d 0a 0d 0a 57 65 20 77 |outines.|....We w|
|000045d0| 69 73 68 20 74 6f 20 73 | 74 72 65 73 73 20 74 68 |ish to s|tress th|
|000045e0| 69 73 20 64 6f 63 75 6d | 65 6e 74 2c 20 77 69 74 |is docum|ent, wit|
|000045f0| 68 20 61 6c 6c 20 69 74 | 73 20 5c 4c 61 54 65 58 |h all it|s \LaTeX|
|00004600| 5c 20 74 65 78 74 2c 20 | 69 73 20 6c 65 73 73 0d |\ text, |is less.|
|00004610| 0a 74 68 61 6e 20 35 30 | 30 20 6c 69 6e 65 73 20 |.than 50|0 lines |
|00004620| 6c 6f 6e 67 2e 20 54 68 | 65 20 61 73 73 65 6d 62 |long. Th|e assemb|
|00004630| 6c 79 20 72 6f 75 74 69 | 6e 65 73 20 75 73 65 64 |ly routi|nes used|
|00004640| 20 70 72 65 76 69 6f 75 | 73 6c 79 20 77 6f 75 6e | previou|sly woun|
|00004650| 64 20 77 65 6c 6c 0d 0a | 61 62 6f 76 65 20 74 68 |d well..|above th|
|00004660| 65 20 31 35 30 30 20 6c | 69 6e 65 73 2e 20 49 66 |e 1500 l|ines. If|
|00004670| 20 77 72 69 74 69 6e 67 | 20 31 30 20 6c 69 6e 65 | writing| 10 line|
|00004680| 73 20 6f 66 20 61 73 73 | 65 6d 62 6c 79 20 72 65 |s of ass|embly re|
|00004690| 6d 6f 76 65 73 20 31 30 | 0d 0a 6e 65 75 72 6f 6e |moves 10|..neuron|
|000046a0| 73 20 66 72 6f 6d 20 61 | 20 70 72 6f 67 72 61 6d |s from a| program|
|000046b0| 6d 65 72 27 73 20 62 72 | 61 69 6e 2c 20 68 6f 77 |mer's br|ain, how|
|000046c0| 20 6d 61 6e 79 20 6e 65 | 75 72 6f 6e 73 20 61 72 | many ne|urons ar|
|000046d0| 65 20 6c 6f 73 74 20 62 | 79 20 61 0d 0a 31 30 2d |e lost b|y a..10-|
|000046e0| 70 65 72 73 6f 6e 20 74 | 65 61 6d 20 77 72 69 74 |person t|eam writ|
|000046f0| 69 6e 67 20 74 68 65 73 | 65 20 31 35 30 30 20 6c |ing thes|e 1500 l|
|00004700| 69 6e 65 73 3f 0d 0a 5c | 65 6e 64 7b 64 6f 63 75 |ines?..\|end{docu|
|00004710| 6d 65 6e 74 7d 0d 0a 0d | 0a |ment}...|. |
+--------+-------------------------+-------------------------+--------+--------+