0000: 3c 68 74 6d 6c 3e 3c 68 65 61 64 3e 3c 74 69 74 <html><head><tit
0010: 6c 65 3e 43 6f 6d 62 69 6e 61 74 6f 72 20 46 6f le>Combinator Fo
0020: 72 6d 61 74 74 69 6e 67 3c 2f 74 69 74 6c 65 3e rmatting</title>
0030: 0a 3c 2f 68 65 61 64 3e 3c 62 6f 64 79 20 62 67 .</head><body bg
0040: 63 6f 6c 6f 72 3d 77 68 69 74 65 3e 0a 0a 3c 68 color=white>..<h
0050: 31 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 75 1><span class=su
0060: 62 6a 65 63 74 3e 43 6f 6d 62 69 6e 61 74 6f 72 bject>Combinator
0070: 20 46 6f 72 6d 61 74 74 69 6e 67 3c 2f 73 70 61 Formatting</spa
0080: 6e 3e 3c 2f 68 31 3e 0a 0a 3c 73 74 79 6c 65 3e n></h1>..<style>
0090: 0a 62 6f 64 79 20 7b 0a 63 6f 6c 6f 72 3a 20 62 .body {.color: b
00a0: 6c 61 63 6b 3b 0a 62 61 63 6b 67 72 6f 75 6e 64 lack;.background
00b0: 2d 63 6f 6c 6f 72 3a 20 77 68 69 74 65 3b 0a 6d -color: white;.m
00c0: 61 72 67 69 6e 2d 74 6f 70 3a 20 32 65 6d 3b 0a argin-top: 2em;.
00d0: 6d 61 72 67 69 6e 2d 6c 65 66 74 3a 20 31 30 25 margin-left: 10%
00e0: 3b 0a 77 69 64 74 68 3a 20 34 30 30 70 74 3b 0a ;.width: 400pt;.
00f0: 7d 0a 0a 70 72 65 20 7b 0a 20 20 62 61 63 6b 67 }..pre {. backg
0100: 72 6f 75 6e 64 2d 63 6f 6c 6f 72 3a 20 62 65 69 round-color: bei
0110: 67 65 3b 0a 7d 0a 0a 70 72 65 2e 73 63 68 65 6d ge;.}..pre.schem
0120: 65 20 7b 0a 20 20 62 61 63 6b 67 72 6f 75 6e 64 e {. background
0130: 2d 63 6f 6c 6f 72 3a 20 77 68 69 74 65 3b 0a 7d -color: white;.}
0140: 0a 0a 2e 73 75 62 6a 65 63 74 20 7b 0a 7d 0a 0a ...subject {.}..
0150: 68 31 20 7b 0a 6d 61 72 67 69 6e 2d 6c 65 66 74 h1 {.margin-left
0160: 3a 20 2d 35 25 3b 0a 6d 61 72 67 69 6e 2d 74 6f : -5%;.margin-to
0170: 70 3a 20 32 65 6d 3b 0a 66 6f 6e 74 2d 73 69 7a p: 2em;.font-siz
0180: 65 3a 20 6c 61 72 67 65 3b 0a 7d 0a 0a 68 32 20 e: large;.}..h2
0190: 7b 0a 6d 61 72 67 69 6e 2d 6c 65 66 74 3a 20 2d {.margin-left: -
01a0: 34 25 3b 0a 6d 61 72 67 69 6e 2d 74 6f 70 3a 20 4%;.margin-top:
01b0: 31 65 6d 3b 0a 66 6f 6e 74 2d 73 69 7a 65 3a 20 1em;.font-size:
01c0: 6c 61 72 67 65 3b 0a 7d 0a 0a 68 33 2c 68 34 2c large;.}..h3,h4,
01d0: 68 35 2c 68 36 20 7b 0a 6d 61 72 67 69 6e 2d 6c h5,h6 {.margin-l
01e0: 65 66 74 3a 20 2d 33 25 3b 0a 6d 61 72 67 69 6e eft: -3%;.margin
01f0: 2d 74 6f 70 3a 20 2e 35 65 6d 3b 0a 66 6f 6e 74 -top: .5em;.font
0200: 2d 73 69 7a 65 3a 20 73 6d 61 6c 6c 3b 0a 7d 0a -size: small;.}.
0210: 0a 2e 6e 61 76 69 67 61 74 69 6f 6e 20 7b 0a 63 ..navigation {.c
0220: 6f 6c 6f 72 3a 20 72 65 64 3b 0a 62 61 63 6b 67 olor: red;.backg
0230: 72 6f 75 6e 64 2d 63 6f 6c 6f 72 3a 20 62 65 69 round-color: bei
0240: 67 65 3b 0a 74 65 78 74 2d 61 6c 69 67 6e 3a 20 ge;.text-align:
0250: 72 69 67 68 74 3b 0a 66 6f 6e 74 2d 73 74 79 6c right;.font-styl
0260: 65 3a 20 69 74 61 6c 69 63 3b 0a 7d 0a 0a 0a 2e e: italic;.}....
0270: 73 63 68 65 6d 65 20 7b 0a 63 6f 6c 6f 72 3a 20 scheme {.color:
0280: 62 72 6f 77 6e 3b 0a 7d 0a 0a 2e 73 63 68 65 6d brown;.}...schem
0290: 65 20 2e 6b 65 79 77 6f 72 64 20 7b 0a 63 6f 6c e .keyword {.col
02a0: 6f 72 3a 20 23 63 63 30 30 30 30 3b 0a 66 6f 6e or: #cc0000;.fon
02b0: 74 2d 77 65 69 67 68 74 3a 20 62 6f 6c 64 3b 0a t-weight: bold;.
02c0: 7d 0a 0a 2e 73 63 68 65 6d 65 20 2e 76 61 72 69 }...scheme .vari
02d0: 61 62 6c 65 20 7b 0a 63 6f 6c 6f 72 3a 20 6e 61 able {.color: na
02e0: 76 79 3b 0a 7d 0a 0a 2e 73 63 68 65 6d 65 20 2e vy;.}...scheme .
02f0: 67 6c 6f 62 61 6c 20 7b 0a 63 6f 6c 6f 72 3a 20 global {.color:
0300: 70 75 72 70 6c 65 3b 0a 7d 0a 0a 2e 73 63 68 65 purple;.}...sche
0310: 6d 65 20 2e 63 6f 6e 73 74 61 6e 74 2c 2e 6e 75 me .constant,.nu
0320: 6d 62 65 72 2c 2e 63 68 61 72 2c 2e 73 74 72 69 mber,.char,.stri
0330: 6e 67 2c 2e 62 6f 6f 6c 65 61 6e 20 7b 0a 63 6f ng,.boolean {.co
0340: 6c 6f 72 3a 20 67 72 65 65 6e 3b 0a 7d 0a 0a 2e lor: green;.}...
0350: 73 63 68 65 6d 65 20 2e 63 6f 6d 6d 65 6e 74 20 scheme .comment
0360: 7b 0a 63 6f 6c 6f 72 3a 20 74 65 61 6c 3b 0a 7d {.color: teal;.}
0370: 0a 3c 2f 73 74 79 6c 65 3e 0a 3c 64 69 76 20 61 .</style>.<div a
0380: 6c 69 67 6e 3d 72 69 67 68 74 3e 3c 61 20 68 72 lign=right><a hr
0390: 65 66 3d 22 68 74 74 70 3a 2f 2f 73 79 6e 74 68 ef="http://synth
03a0: 63 6f 64 65 2e 63 6f 6d 2f 22 3e 41 6c 65 78 20 code.com/">Alex
03b0: 53 68 69 6e 6e 3c 2f 61 3e 3c 2f 64 69 76 3e 0a Shinn</a></div>.
03c0: 3c 64 69 76 20 61 6c 69 67 6e 3d 72 69 67 68 74 <div align=right
03d0: 3e 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f ><a href="http:/
03e0: 2f 73 79 6e 74 68 63 6f 64 65 2e 63 6f 6d 2f 73 /synthcode.com/s
03f0: 63 68 65 6d 65 2f 66 6d 74 2f 66 6d 74 2d 30 2e cheme/fmt/fmt-0.
0400: 38 2e 34 2e 74 61 72 2e 67 7a 22 3e 44 6f 77 6e 8.4.tar.gz">Down
0410: 6c 6f 61 64 20 56 65 72 73 69 6f 6e 20 30 2e 38 load Version 0.8
0420: 2e 34 3c 2f 61 3e 3c 2f 64 69 76 3e 0a 3c 70 3e .4</a></div>.<p>
0430: 0a 0a 3c 62 72 20 2f 3e 3c 62 72 20 2f 3e 0a 0a ..<br /><br />..
0440: 41 20 6c 69 62 72 61 72 79 20 6f 66 20 70 72 6f A library of pro
0450: 63 65 64 75 72 65 73 20 66 6f 72 20 66 6f 72 6d cedures for form
0460: 61 74 74 69 6e 67 20 53 63 68 65 6d 65 20 6f 62 atting Scheme ob
0470: 6a 65 63 74 73 20 74 6f 20 74 65 78 74 20 69 6e jects to text in
0480: 0a 76 61 72 69 6f 75 73 20 77 61 79 73 2c 20 61 .various ways, a
0490: 6e 64 20 66 6f 72 20 65 61 73 69 6c 79 20 63 6f nd for easily co
04a0: 6e 63 61 74 65 6e 61 74 69 6e 67 2c 20 63 6f 6d ncatenating, com
04b0: 70 6f 73 69 6e 67 20 61 6e 64 20 65 78 74 65 6e posing and exten
04c0: 64 69 6e 67 0a 74 68 65 73 65 20 66 6f 72 6d 61 ding.these forma
04d0: 74 74 65 72 73 20 65 66 66 69 63 69 65 6e 74 6c tters efficientl
04e0: 79 20 77 69 74 68 6f 75 74 20 72 65 73 6f 72 74 y without resort
04f0: 69 6e 67 20 74 6f 20 63 61 70 74 75 72 69 6e 67 ing to capturing
0500: 20 61 6e 64 0a 6d 61 6e 69 70 75 6c 61 74 69 6e and.manipulatin
0510: 67 20 69 6e 74 65 72 6d 65 64 69 61 74 65 20 73 g intermediate s
0520: 74 72 69 6e 67 73 2e 0a 3c 70 3e 0a 0a 3c 62 72 trings..<p>..<br
0530: 20 2f 3e 3c 62 72 20 2f 3e 0a 0a 3c 61 20 6e 61 /><br />..<a na
0540: 6d 65 3d 22 53 45 43 54 49 4f 4e 5f 31 22 3e 3c me="SECTION_1"><
0550: 68 31 3e 31 26 6e 62 73 70 3b 26 6e 62 73 70 3b h1>1
0560: 54 61 62 6c 65 20 6f 66 20 43 6f 6e 74 65 6e 74 Table of Content
0570: 73 3c 2f 68 31 3e 0a 0a 0a 0a 3c 6f 6c 3e 0a 3c s</h1>....<ol>.<
0580: 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 45 43 li><a href="#SEC
0590: 54 49 4f 4e 5f 31 22 3e 54 61 62 6c 65 20 6f 66 TION_1">Table of
05a0: 20 43 6f 6e 74 65 6e 74 73 3c 2f 61 3e 0a 3c 6c Contents</a>.<l
05b0: 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 45 43 54 i><a href="#SECT
05c0: 49 4f 4e 5f 32 22 3e 49 6e 73 74 61 6c 6c 61 74 ION_2">Installat
05d0: 69 6f 6e 3c 2f 61 3e 0a 3c 6c 69 3e 3c 61 20 68 ion</a>.<li><a h
05e0: 72 65 66 3d 22 23 53 45 43 54 49 4f 4e 5f 33 22 ref="#SECTION_3"
05f0: 3e 42 61 63 6b 67 72 6f 75 6e 64 3c 2f 61 3e 0a >Background</a>.
0600: 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 45 <li><a href="#SE
0610: 43 54 49 4f 4e 5f 34 22 3e 55 73 61 67 65 3c 2f CTION_4">Usage</
0620: 61 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 a>.<li><a href="
0630: 23 53 45 43 54 49 4f 4e 5f 35 22 3e 53 70 65 63 #SECTION_5">Spec
0640: 69 66 69 63 61 74 69 6f 6e 3c 2f 61 3e 0a 3c 6f ification</a>.<o
0650: 6c 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 l>.<li><a href="
0660: 23 53 45 43 54 49 4f 4e 5f 35 2e 31 22 3e 46 6f #SECTION_5.1">Fo
0670: 72 6d 61 74 74 69 6e 67 20 4f 62 6a 65 63 74 73 rmatting Objects
0680: 3c 2f 61 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 </a>.<li><a href
0690: 3d 22 23 53 45 43 54 49 4f 4e 5f 35 2e 32 22 3e ="#SECTION_5.2">
06a0: 46 6f 72 6d 61 74 74 69 6e 67 20 4e 75 6d 62 65 Formatting Numbe
06b0: 72 73 3c 2f 61 3e 0a 3c 6c 69 3e 3c 61 20 68 72 rs</a>.<li><a hr
06c0: 65 66 3d 22 23 53 45 43 54 49 4f 4e 5f 35 2e 33 ef="#SECTION_5.3
06d0: 22 3e 46 6f 72 6d 61 74 74 69 6e 67 20 53 70 61 ">Formatting Spa
06e0: 63 65 3c 2f 61 3e 0a 3c 6c 69 3e 3c 61 20 68 72 ce</a>.<li><a hr
06f0: 65 66 3d 22 23 53 45 43 54 49 4f 4e 5f 35 2e 34 ef="#SECTION_5.4
0700: 22 3e 43 6f 6e 63 61 74 65 6e 61 74 69 6f 6e 3c ">Concatenation<
0710: 2f 61 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d /a>.<li><a href=
0720: 22 23 53 45 43 54 49 4f 4e 5f 35 2e 35 22 3e 50 "#SECTION_5.5">P
0730: 61 64 64 69 6e 67 20 61 6e 64 20 54 72 69 6d 6d adding and Trimm
0740: 69 6e 67 3c 2f 61 3e 0a 3c 6c 69 3e 3c 61 20 68 ing</a>.<li><a h
0750: 72 65 66 3d 22 23 53 45 43 54 49 4f 4e 5f 35 2e ref="#SECTION_5.
0760: 36 22 3e 46 6f 72 6d 61 74 20 56 61 72 69 61 62 6">Format Variab
0770: 6c 65 73 3c 2f 61 3e 0a 3c 6c 69 3e 3c 61 20 68 les</a>.<li><a h
0780: 72 65 66 3d 22 23 53 45 43 54 49 4f 4e 5f 35 2e ref="#SECTION_5.
0790: 37 22 3e 43 6f 6c 75 6d 6e 61 72 20 46 6f 72 6d 7">Columnar Form
07a0: 61 74 74 69 6e 67 3c 2f 61 3e 0a 3c 2f 6f 6c 3e atting</a>.</ol>
07b0: 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 .<li><a href="#S
07c0: 45 43 54 49 4f 4e 5f 36 22 3e 43 20 46 6f 72 6d ECTION_6">C Form
07d0: 61 74 74 69 6e 67 3c 2f 61 3e 0a 3c 6f 6c 3e 0a atting</a>.<ol>.
07e0: 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 45 <li><a href="#SE
07f0: 43 54 49 4f 4e 5f 36 2e 31 22 3e 43 20 46 6f 72 CTION_6.1">C For
0800: 6d 61 74 74 69 6e 67 20 42 61 73 69 63 73 3c 2f matting Basics</
0810: 61 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 a>.<li><a href="
0820: 23 53 45 43 54 49 4f 4e 5f 36 2e 32 22 3e 43 20 #SECTION_6.2">C
0830: 50 72 65 70 72 6f 63 65 73 73 6f 72 20 46 6f 72 Preprocessor For
0840: 6d 61 74 74 69 6e 67 3c 2f 61 3e 0a 3c 6c 69 3e matting</a>.<li>
0850: 3c 61 20 68 72 65 66 3d 22 23 53 45 43 54 49 4f <a href="#SECTIO
0860: 4e 5f 36 2e 33 22 3e 43 75 73 74 6f 6d 69 7a 69 N_6.3">Customizi
0870: 6e 67 20 43 20 53 74 79 6c 65 3c 2f 61 3e 0a 3c ng C Style</a>.<
0880: 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 45 43 li><a href="#SEC
0890: 54 49 4f 4e 5f 36 2e 34 22 3e 43 20 46 6f 72 6d TION_6.4">C Form
08a0: 61 74 74 65 72 20 49 6e 64 65 78 3c 2f 61 3e 0a atter Index</a>.
08b0: 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 45 <li><a href="#SE
08c0: 43 54 49 4f 4e 5f 36 2e 35 22 3e 43 20 50 72 65 CTION_6.5">C Pre
08d0: 70 72 6f 63 65 73 73 6f 72 20 46 6f 72 6d 61 74 processor Format
08e0: 74 65 72 20 49 6e 64 65 78 3c 2f 61 3e 0a 3c 6c ter Index</a>.<l
08f0: 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 45 43 54 i><a href="#SECT
0900: 49 4f 4e 5f 36 2e 36 22 3e 43 20 54 79 70 65 73 ION_6.6">C Types
0910: 3c 2f 61 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 </a>.<li><a href
0920: 3d 22 23 53 45 43 54 49 4f 4e 5f 36 2e 37 22 3e ="#SECTION_6.7">
0930: 43 20 61 73 20 53 2d 45 78 70 72 65 73 73 69 6f C as S-Expressio
0940: 6e 73 3c 2f 61 3e 0a 3c 2f 6f 6c 3e 0a 3c 6c 69 ns</a>.</ol>.<li
0950: 3e 3c 61 20 68 72 65 66 3d 22 23 53 45 43 54 49 ><a href="#SECTI
0960: 4f 4e 5f 37 22 3e 4a 61 76 61 53 63 72 69 70 74 ON_7">JavaScript
0970: 20 46 6f 72 6d 61 74 74 69 6e 67 3c 2f 61 3e 0a Formatting</a>.
0980: 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 45 <li><a href="#SE
0990: 43 54 49 4f 4e 5f 38 22 3e 46 6f 72 6d 61 74 74 CTION_8">Formatt
09a0: 69 6e 67 20 77 69 74 68 20 43 6f 6c 6f 72 3c 2f ing with Color</
09b0: 61 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 a>.<li><a href="
09c0: 23 53 45 43 54 49 4f 4e 5f 39 22 3e 55 6e 69 63 #SECTION_9">Unic
09d0: 6f 64 65 3c 2f 61 3e 0a 3c 6c 69 3e 3c 61 20 68 ode</a>.<li><a h
09e0: 72 65 66 3d 22 23 53 45 43 54 49 4f 4e 5f 31 30 ref="#SECTION_10
09f0: 22 3e 4f 70 74 69 6d 69 7a 69 6e 67 3c 2f 61 3e ">Optimizing</a>
0a00: 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 .<li><a href="#S
0a10: 45 43 54 49 4f 4e 5f 31 31 22 3e 43 6f 6d 6d 6f ECTION_11">Commo
0a20: 6e 20 4c 69 73 70 20 46 6f 72 6d 61 74 20 43 68 n Lisp Format Ch
0a30: 65 61 74 20 53 68 65 65 74 3c 2f 61 3e 0a 3c 6c eat Sheet</a>.<l
0a40: 69 3e 3c 61 20 68 72 65 66 3d 22 23 53 45 43 54 i><a href="#SECT
0a50: 49 4f 4e 5f 31 32 22 3e 52 65 66 65 72 65 6e 63 ION_12">Referenc
0a60: 65 73 3c 2f 61 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 62 es</a>.</ol>..<b
0a70: 72 20 2f 3e 3c 62 72 20 2f 3e 0a 0a 3c 61 20 6e r /><br />..<a n
0a80: 61 6d 65 3d 22 53 45 43 54 49 4f 4e 5f 32 22 3e ame="SECTION_2">
0a90: 3c 68 31 3e 32 26 6e 62 73 70 3b 26 6e 62 73 70 <h1>2  
0aa0: 3b 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 3c 2f 68 ;Installation</h
0ab0: 31 3e 0a 0a 41 76 61 69 6c 61 62 6c 65 20 66 6f 1>..Available fo
0ac0: 72 20 43 68 69 63 6b 65 6e 20 61 73 20 74 68 65 r Chicken as the
0ad0: 20 3c 63 6f 64 65 3e 66 6d 74 3c 2f 63 6f 64 65 <code>fmt</code
0ae0: 3e 20 65 67 67 2c 20 70 72 6f 76 69 64 69 6e 67 > egg, providing
0af0: 20 74 68 65 20 3c 63 6f 64 65 20 63 6c 61 73 73 the <code class
0b00: 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c =scheme><span cl
0b10: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 ass=variable>fmt
0b20: 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 0a </span></code>,.
0b30: 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
0b40: 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 me><span class=v
0b50: 61 72 69 61 62 6c 65 3e 66 6d 74 2d 63 3c 2f 73 ariable>fmt-c</s
0b60: 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f pan></code>, <co
0b70: 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
0b80: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
0b90: 61 62 6c 65 3e 66 6d 74 2d 63 6f 6c 6f 72 3c 2f able>fmt-color</
0ba0: 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 61 6e 64 span></code> and
0bb0: 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 <code class=sch
0bc0: 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d eme><span class=
0bd0: 76 61 72 69 61 62 6c 65 3e 66 6d 74 2d 75 6e 69 variable>fmt-uni
0be0: 63 6f 64 65 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 code</span></cod
0bf0: 65 3e 20 65 78 74 65 6e 73 69 6f 6e 73 2e 20 20 e> extensions.
0c00: 54 6f 20 69 6e 73 74 61 6c 6c 0a 6d 61 6e 75 61 To install.manua
0c10: 6c 6c 79 20 66 6f 72 20 43 68 69 63 6b 65 6e 20 lly for Chicken
0c20: 6a 75 73 74 20 72 75 6e 20 3c 63 6f 64 65 3e 26 just run <code>&
0c30: 71 75 6f 74 3b 63 68 69 63 6b 65 6e 2d 73 65 74 quot;chicken-set
0c40: 75 70 26 71 75 6f 74 3b 3c 2f 63 6f 64 65 3e 20 up"</code>
0c50: 69 6e 20 74 68 65 20 66 6d 74 0a 64 69 72 65 63 in the fmt.direc
0c60: 74 6f 72 79 2e 0a 3c 70 3e 0a 0a 46 6f 72 20 47 tory..<p>..For G
0c70: 61 75 63 68 65 20 72 75 6e 20 3c 63 6f 64 65 3e auche run <code>
0c80: 26 71 75 6f 74 3b 6d 61 6b 65 20 67 61 75 63 68 "make gauch
0c90: 65 20 26 61 6d 70 3b 26 61 6d 70 3b 20 6d 61 6b e && mak
0ca0: 65 20 69 6e 73 74 61 6c 6c 2d 67 61 75 63 68 65 e install-gauche
0cb0: 26 71 75 6f 74 3b 3c 2f 63 6f 64 65 3e 2e 20 20 "</code>.
0cc0: 54 68 65 20 6d 6f 64 75 6c 65 73 0a 61 72 65 20 The modules.are
0cd0: 69 6e 73 74 61 6c 6c 65 64 20 61 73 20 3c 63 6f installed as <co
0ce0: 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
0cf0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
0d00: 61 62 6c 65 3e 74 65 78 74 2e 66 6d 74 3c 2f 73 able>text.fmt</s
0d10: 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f pan></code>, <co
0d20: 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
0d30: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
0d40: 61 62 6c 65 3e 74 65 78 74 2e 66 6d 74 2e 63 3c able>text.fmt.c<
0d50: 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 3c /span></code>, <
0d60: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
0d70: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
0d80: 72 69 61 62 6c 65 3e 74 65 78 74 2e 66 6d 74 2e riable>text.fmt.
0d90: 63 6f 6c 6f 72 3c 2f 73 70 61 6e 3e 3c 2f 63 6f color</span></co
0da0: 64 65 3e 20 61 6e 64 0a 3c 63 6f 64 65 20 63 6c de> and.<code cl
0db0: 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e ass=scheme><span
0dc0: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
0dd0: 74 65 78 74 2e 66 6d 74 2e 75 6e 69 63 6f 64 65 text.fmt.unicode
0de0: 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2e 0a </span></code>..
0df0: 3c 70 3e 0a 0a 46 6f 72 20 4d 7a 53 63 68 65 6d <p>..For MzSchem
0e00: 65 20 79 6f 75 20 63 61 6e 20 64 6f 77 6e 6c 6f e you can downlo
0e10: 61 64 20 61 6e 64 20 69 6e 73 74 61 6c 6c 20 74 ad and install t
0e20: 68 65 20 6c 61 74 65 73 74 20 3c 63 6f 64 65 3e he latest <code>
0e30: 66 6d 74 2e 70 6c 74 3c 2f 63 6f 64 65 3e 20 79 fmt.plt</code> y
0e40: 6f 75 72 73 65 6c 66 0a 66 72 6f 6d 3a 0a 3c 70 ourself.from:.<p
0e50: 3e 0a 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 >..<a href="http
0e60: 3a 2f 2f 73 79 6e 74 68 63 6f 64 65 2e 63 6f 6d ://synthcode.com
0e70: 2f 73 63 68 65 6d 65 2f 66 6d 74 2f 66 6d 74 2e /scheme/fmt/fmt.
0e80: 70 6c 74 22 3e 68 74 74 70 3a 2f 2f 73 79 6e 74 plt">http://synt
0e90: 68 63 6f 64 65 2e 63 6f 6d 2f 73 63 68 65 6d 65 hcode.com/scheme
0ea0: 2f 66 6d 74 2f 66 6d 74 2e 70 6c 74 3c 2f 61 3e /fmt/fmt.plt</a>
0eb0: 0a 3c 70 3e 0a 0a 54 6f 20 62 75 69 6c 64 20 74 .<p>..To build t
0ec0: 68 65 20 3c 63 6f 64 65 3e 66 6d 74 2e 70 6c 74 he <code>fmt.plt
0ed0: 3c 2f 63 6f 64 65 3e 20 66 6f 72 20 79 6f 75 72 </code> for your
0ee0: 73 65 6c 66 20 79 6f 75 20 63 61 6e 20 72 75 6e self you can run
0ef0: 20 3c 63 6f 64 65 3e 26 71 75 6f 74 3b 6d 61 6b <code>"mak
0f00: 65 20 6d 7a 73 63 68 65 6d 65 26 71 75 6f 74 3b e mzscheme"
0f10: 3c 2f 63 6f 64 65 3e 2e 0a 3c 70 3e 0a 0a 46 6f </code>..<p>..Fo
0f20: 72 20 53 63 68 65 6d 65 34 38 20 74 68 65 20 70 r Scheme48 the p
0f30: 61 63 6b 61 67 65 20 64 65 73 63 72 69 70 74 69 ackage descripti
0f40: 6f 6e 73 20 61 72 65 20 69 6e 20 3c 63 6f 64 65 ons are in <code
0f50: 3e 66 6d 74 2d 73 63 68 65 6d 65 34 38 2e 73 63 >fmt-scheme48.sc
0f60: 6d 3c 2f 63 6f 64 65 3e 3a 0a 3c 70 3e 0a 0a 3c m</code>:.<p>..<
0f70: 70 72 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 pre class=scheme
0f80: 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 >.<span class=va
0f90: 72 69 61 62 6c 65 3e 26 67 74 3b 3c 2f 73 70 61 riable>></spa
0fa0: 6e 3e 20 2c 3c 73 70 61 6e 20 63 6c 61 73 73 3d n> ,<span class=
0fb0: 76 61 72 69 61 62 6c 65 3e 63 6f 6e 66 69 67 3c variable>config<
0fc0: 2f 73 70 61 6e 3e 20 2c 3c 73 70 61 6e 20 63 6c /span> ,<span cl
0fd0: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 6c 6f 61 ass=variable>loa
0fe0: 64 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 d</span> <span c
0ff0: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d lass=variable>fm
1000: 74 2d 73 63 68 65 6d 65 34 38 2e 73 63 6d 3c 2f t-scheme48.scm</
1010: 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 6c 61 73 span>.<span clas
1020: 73 3d 76 61 72 69 61 62 6c 65 3e 26 67 74 3b 3c s=variable>><
1030: 2f 73 70 61 6e 3e 20 2c 3c 73 70 61 6e 20 63 6c /span> ,<span cl
1040: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 6f 70 65 ass=variable>ope
1050: 6e 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 n</span> <span c
1060: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d lass=variable>fm
1070: 74 3c 2f 73 70 61 6e 3e 0a 3c 2f 70 72 65 3e 0a t</span>.</pre>.
1080: 3c 70 3e 0a 0a 46 6f 72 20 6f 74 68 65 72 20 69 <p>..For other i
1090: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 79 mplementations y
10a0: 6f 75 27 6c 6c 20 6e 65 65 64 20 74 6f 20 6c 6f ou'll need to lo
10b0: 61 64 20 53 52 46 49 27 73 20 31 2c 20 36 2c 20 ad SRFI's 1, 6,
10c0: 31 33 2c 20 33 33 0a 28 73 61 6d 70 6c 65 20 70 13, 33.(sample p
10d0: 72 6f 76 69 64 65 64 29 20 61 6e 64 20 36 39 20 rovided) and 69
10e0: 28 61 6c 73 6f 20 70 72 6f 76 69 64 65 64 29 2c (also provided),
10f0: 20 61 6e 64 20 74 68 65 6e 20 6c 6f 61 64 20 74 and then load t
1100: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 66 69 6c he following.fil
1110: 65 73 3a 0a 3c 70 3e 0a 0a 3c 70 72 65 20 63 6c es:.<p>..<pre cl
1120: 61 73 73 3d 73 63 68 65 6d 65 3e 0a 20 20 28 3c ass=scheme>. (<
1130: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
1140: 62 6c 65 3e 6c 6f 61 64 3c 2f 73 70 61 6e 3e 20 ble>load</span>
1150: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 <span class=stri
1160: 6e 67 3e 26 71 75 6f 74 3b 6c 65 74 2d 6f 70 74 ng>"let-opt
1170: 69 6f 6e 61 6c 73 2e 73 63 6d 26 71 75 6f 74 3b ionals.scm"
1180: 3c 2f 73 70 61 6e 3e 29 20 20 3c 73 70 61 6e 20 </span>) <span
1190: 63 6c 61 73 73 3d 63 6f 6d 6d 65 6e 74 3e 3b 20 class=comment>;
11a0: 69 66 20 79 6f 75 20 64 6f 6e 27 74 20 68 61 76 if you don't hav
11b0: 65 20 4c 45 54 2d 4f 50 54 49 4f 4e 41 4c 53 2a e LET-OPTIONALS*
11c0: 3c 2f 73 70 61 6e 3e 0a 20 20 28 3c 73 70 61 6e </span>. (<span
11d0: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
11e0: 6c 6f 61 64 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 load</span> <spa
11f0: 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e 26 n class=string>&
1200: 71 75 6f 74 3b 72 65 61 64 2d 6c 69 6e 65 2e 73 quot;read-line.s
1210: 63 6d 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 29 cm"</span>)
1220: 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 <span clas
1230: 73 3d 63 6f 6d 6d 65 6e 74 3e 3b 20 69 66 20 79 s=comment>; if y
1240: 6f 75 20 64 6f 6e 27 74 20 68 61 76 65 20 52 45 ou don't have RE
1250: 41 44 2d 4c 49 4e 45 3c 2f 73 70 61 6e 3e 0a 20 AD-LINE</span>.
1260: 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 (<span class=va
1270: 72 69 61 62 6c 65 3e 6c 6f 61 64 3c 2f 73 70 61 riable>load</spa
1280: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 n> <span class=s
1290: 74 72 69 6e 67 3e 26 71 75 6f 74 3b 73 74 72 69 tring>"stri
12a0: 6e 67 2d 70 6f 72 74 73 2e 73 63 6d 26 71 75 6f ng-ports.scm&quo
12b0: 74 3b 3c 2f 73 70 61 6e 3e 29 20 20 20 3c 73 70 t;</span>) <sp
12c0: 61 6e 20 63 6c 61 73 73 3d 63 6f 6d 6d 65 6e 74 an class=comment
12d0: 3e 3b 20 69 66 20 79 6f 75 20 64 6f 6e 27 74 20 >; if you don't
12e0: 68 61 76 65 20 43 41 4c 4c 2d 57 49 54 48 2d 4f have CALL-WITH-O
12f0: 55 54 50 55 54 2d 53 54 52 49 4e 47 3c 2f 73 70 UTPUT-STRING</sp
1300: 61 6e 3e 0a 20 20 28 3c 73 70 61 6e 20 63 6c 61 an>. (<span cla
1310: 73 73 3d 76 61 72 69 61 62 6c 65 3e 6c 6f 61 64 ss=variable>load
1320: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
1330: 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 ass=string>"
1340: 3b 6d 61 6b 65 2d 65 71 2d 74 61 62 6c 65 2e 73 ;make-eq-table.s
1350: 63 6d 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 29 cm"</span>)
1360: 0a 20 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d . (<span class=
1370: 76 61 72 69 61 62 6c 65 3e 6c 6f 61 64 3c 2f 73 variable>load</s
1380: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
1390: 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 3b 6d 61 =string>"ma
13a0: 6e 74 69 73 73 61 2e 73 63 6d 26 71 75 6f 74 3b ntissa.scm"
13b0: 3c 2f 73 70 61 6e 3e 29 0a 20 20 28 3c 73 70 61 </span>). (<spa
13c0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
13d0: 3e 6c 6f 61 64 3c 2f 73 70 61 6e 3e 20 3c 73 70 >load</span> <sp
13e0: 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e an class=string>
13f0: 26 71 75 6f 74 3b 66 6d 74 2e 73 63 6d 26 71 75 "fmt.scm&qu
1400: 6f 74 3b 3c 2f 73 70 61 6e 3e 29 0a 20 20 28 3c ot;</span>). (<
1410: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
1420: 62 6c 65 3e 6c 6f 61 64 3c 2f 73 70 61 6e 3e 20 ble>load</span>
1430: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 <span class=stri
1440: 6e 67 3e 26 71 75 6f 74 3b 66 6d 74 2d 70 72 65 ng>"fmt-pre
1450: 74 74 79 2e 73 63 6d 26 71 75 6f 74 3b 3c 2f 73 tty.scm"</s
1460: 70 61 6e 3e 29 20 20 20 20 20 3c 73 70 61 6e 20 pan>) <span
1470: 63 6c 61 73 73 3d 63 6f 6d 6d 65 6e 74 3e 3b 20 class=comment>;
1480: 6f 70 74 69 6f 6e 61 6c 20 70 72 65 74 74 79 20 optional pretty
1490: 70 72 69 6e 74 69 6e 67 3c 2f 73 70 61 6e 3e 0a printing</span>.
14a0: 20 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 (<span class=v
14b0: 61 72 69 61 62 6c 65 3e 6c 6f 61 64 3c 2f 73 70 ariable>load</sp
14c0: 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
14d0: 73 74 72 69 6e 67 3e 26 71 75 6f 74 3b 66 6d 74 string>"fmt
14e0: 2d 63 6f 6c 75 6d 6e 2e 73 63 6d 26 71 75 6f 74 -column.scm"
14f0: 3b 3c 2f 73 70 61 6e 3e 29 20 20 20 20 20 3c 73 ;</span>) <s
1500: 70 61 6e 20 63 6c 61 73 73 3d 63 6f 6d 6d 65 6e pan class=commen
1510: 74 3e 3b 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6c t>; optional col
1520: 75 6d 6e 61 72 20 6f 75 74 70 75 74 3c 2f 73 70 umnar output</sp
1530: 61 6e 3e 0a 20 20 28 3c 73 70 61 6e 20 63 6c 61 an>. (<span cla
1540: 73 73 3d 76 61 72 69 61 62 6c 65 3e 6c 6f 61 64 ss=variable>load
1550: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
1560: 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 ass=string>"
1570: 3b 66 6d 74 2d 63 2e 73 63 6d 26 71 75 6f 74 3b ;fmt-c.scm"
1580: 3c 2f 73 70 61 6e 3e 29 20 20 20 20 20 20 20 20 </span>)
1590: 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 63 6f <span class=co
15a0: 6d 6d 65 6e 74 3e 3b 20 6f 70 74 69 6f 6e 61 6c mment>; optional
15b0: 20 43 20 66 6f 72 6d 61 74 74 69 6e 67 20 75 74 C formatting ut
15c0: 69 6c 69 74 69 65 73 3c 2f 73 70 61 6e 3e 0a 20 ilities</span>.
15d0: 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 (<span class=va
15e0: 72 69 61 62 6c 65 3e 6c 6f 61 64 3c 2f 73 70 61 riable>load</spa
15f0: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 n> <span class=s
1600: 74 72 69 6e 67 3e 26 71 75 6f 74 3b 66 6d 74 2d tring>"fmt-
1610: 63 6f 6c 6f 72 2e 73 63 6d 26 71 75 6f 74 3b 3c color.scm"<
1620: 2f 73 70 61 6e 3e 29 20 20 20 20 20 20 3c 73 70 /span>) <sp
1630: 61 6e 20 63 6c 61 73 73 3d 63 6f 6d 6d 65 6e 74 an class=comment
1640: 3e 3b 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6c 6f >; optional colo
1650: 72 20 75 74 69 6c 69 74 69 65 73 3c 2f 73 70 61 r utilities</spa
1660: 6e 3e 0a 20 20 28 3c 73 70 61 6e 20 63 6c 61 73 n>. (<span clas
1670: 73 3d 76 61 72 69 61 62 6c 65 3e 6c 6f 61 64 3c s=variable>load<
1680: 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
1690: 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 3b ss=string>"
16a0: 66 6d 74 2d 75 6e 69 63 6f 64 65 2e 73 63 6d 26 fmt-unicode.scm&
16b0: 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 29 20 20 20 quot;</span>)
16c0: 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 63 6f 6d <span class=com
16d0: 6d 65 6e 74 3e 3b 20 6f 70 74 69 6f 6e 61 6c 20 ment>; optional
16e0: 55 6e 69 63 6f 64 65 2d 61 77 61 72 65 20 66 6f Unicode-aware fo
16f0: 72 6d 61 74 74 69 6e 67 2c 3c 2f 73 70 61 6e 3e rmatting,</span>
1700: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c <
1720: 73 70 61 6e 20 63 6c 61 73 73 3d 63 6f 6d 6d 65 span class=comme
1730: 6e 74 3e 3b 20 20 20 61 6c 73 6f 20 72 65 71 75 nt>; also requ
1740: 69 72 65 73 20 53 52 46 49 2d 34 20 6f 72 20 53 ires SRFI-4 or S
1750: 52 46 49 2d 36 36 3c 2f 73 70 61 6e 3e 0a 3c 2f RFI-66</span>.</
1760: 70 72 65 3e 0a 3c 70 3e 0a 0a 3c 61 20 6e 61 6d pre>.<p>..<a nam
1770: 65 3d 22 53 45 43 54 49 4f 4e 5f 33 22 3e 3c 68 e="SECTION_3"><h
1780: 31 3e 33 26 6e 62 73 70 3b 26 6e 62 73 70 3b 42 1>3 B
1790: 61 63 6b 67 72 6f 75 6e 64 3c 2f 68 31 3e 0a 0a ackground</h1>..
17a0: 54 68 65 72 65 20 61 72 65 20 73 65 76 65 72 61 There are severa
17b0: 6c 20 61 70 70 72 6f 61 63 68 65 73 20 74 6f 20 l approaches to
17c0: 74 65 78 74 20 66 6f 72 6d 61 74 74 69 6e 67 2e text formatting.
17d0: 20 20 42 75 69 6c 64 69 6e 67 20 73 74 72 69 6e Building strin
17e0: 67 73 20 74 6f 0a 3c 63 6f 64 65 20 63 6c 61 73 gs to.<code clas
17f0: 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 s=scheme><span c
1800: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 64 69 lass=variable>di
1810: 73 70 6c 61 79 3c 2f 73 70 61 6e 3e 3c 2f 63 6f splay</span></co
1820: 64 65 3e 20 69 73 20 6e 6f 74 20 61 63 63 65 70 de> is not accep
1830: 74 61 62 6c 65 2c 20 73 69 6e 63 65 20 69 74 20 table, since it
1840: 64 6f 65 73 6e 27 74 20 73 63 61 6c 65 20 74 6f doesn't scale to
1850: 20 76 65 72 79 20 6c 61 72 67 65 0a 6f 75 74 70 very large.outp
1860: 75 74 2e 20 20 54 68 65 20 73 69 6d 70 6c 65 73 ut. The simples
1870: 74 20 72 65 61 6c 69 73 74 69 63 20 69 64 65 61 t realistic idea
1880: 2c 20 61 6e 64 20 77 68 61 74 20 70 65 6f 70 6c , and what peopl
1890: 65 20 72 65 73 6f 72 74 20 74 6f 20 69 6e 0a 74 e resort to in.t
18a0: 79 70 69 63 61 6c 20 70 6f 72 74 61 62 6c 65 20 ypical portable
18b0: 53 63 68 65 6d 65 2c 20 69 73 20 74 6f 20 69 6e Scheme, is to in
18c0: 74 65 72 6c 65 61 76 65 20 3c 63 6f 64 65 20 63 terleave <code c
18d0: 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 lass=scheme><spa
18e0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
18f0: 3e 64 69 73 70 6c 61 79 3c 2f 73 70 61 6e 3e 3c >display</span><
1900: 2f 63 6f 64 65 3e 20 61 6e 64 20 3c 63 6f 64 65 /code> and <code
1910: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
1920: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
1930: 6c 65 3e 77 72 69 74 65 3c 2f 73 70 61 6e 3e 3c le>write</span><
1940: 2f 63 6f 64 65 3e 0a 61 6e 64 20 6d 61 6e 75 61 /code>.and manua
1950: 6c 20 6c 6f 6f 70 73 2c 20 62 75 74 20 74 68 69 l loops, but thi
1960: 73 20 69 73 20 62 6f 74 68 20 65 78 74 72 65 6d s is both extrem
1970: 65 6c 79 20 76 65 72 62 6f 73 65 20 61 6e 64 20 ely verbose and
1980: 64 6f 65 73 6e 27 74 0a 63 6f 6d 70 6f 73 65 20 doesn't.compose
1990: 77 65 6c 6c 2e 20 20 41 20 73 69 6d 70 6c 65 20 well. A simple
19a0: 63 6f 6e 63 65 70 74 20 73 75 63 68 20 61 73 20 concept such as
19b0: 70 61 64 64 69 6e 67 20 73 70 61 63 65 20 63 61 padding space ca
19c0: 6e 27 74 20 62 65 0a 61 63 68 69 65 76 65 64 20 n't be.achieved
19d0: 64 69 72 65 63 74 6c 79 20 77 69 74 68 6f 75 74 directly without
19e0: 20 73 6f 6d 65 68 6f 77 20 63 61 70 74 75 72 69 somehow capturi
19f0: 6e 67 20 69 6e 74 65 72 6d 65 64 69 61 74 65 20 ng intermediate
1a00: 6f 75 74 70 75 74 2e 0a 3c 70 3e 0a 0a 54 68 65 output..<p>..The
1a10: 20 74 72 61 64 69 74 69 6f 6e 61 6c 20 61 70 70 traditional app
1a20: 72 6f 61 63 68 20 69 73 20 74 6f 20 75 73 65 20 roach is to use
1a30: 74 65 6d 70 6c 61 74 65 73 20 2d 20 74 79 70 69 templates - typi
1a40: 63 61 6c 6c 79 20 73 74 72 69 6e 67 73 2c 0a 74 cally strings,.t
1a50: 68 6f 75 67 68 20 69 6e 20 74 68 65 6f 72 79 20 hough in theory
1a60: 61 6e 79 20 6f 62 6a 65 63 74 20 63 6f 75 6c 64 any object could
1a70: 20 62 65 20 75 73 65 64 20 61 6e 64 20 69 6e 64 be used and ind
1a80: 65 65 64 20 45 6d 61 63 73 27 20 6d 6f 64 65 2d eed Emacs' mode-
1a90: 6c 69 6e 65 0a 66 6f 72 6d 61 74 20 74 65 6d 70 line.format temp
1aa0: 6c 61 74 65 73 20 61 6c 6c 6f 77 20 61 72 62 69 lates allow arbi
1ab0: 74 72 61 72 79 20 73 65 78 70 73 2e 20 20 54 65 trary sexps. Te
1ac0: 6d 70 6c 61 74 65 73 20 63 61 6e 20 75 73 65 20 mplates can use
1ad0: 65 69 74 68 65 72 0a 65 73 63 61 70 65 20 73 65 either.escape se
1ae0: 71 75 65 6e 63 65 73 20 28 61 73 20 69 6e 20 43 quences (as in C
1af0: 27 73 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 's <code class=s
1b00: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
1b10: 73 3d 76 61 72 69 61 62 6c 65 3e 70 72 69 6e 74 s=variable>print
1b20: 66 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 f</span></code>
1b30: 61 6e 64 20 3c 61 20 68 72 65 66 3d 22 23 42 49 and <a href="#BI
1b40: 42 49 54 45 4d 5f 32 22 3e 43 4c 27 73 3c 2f 61 BITEM_2">CL's</a
1b50: 3e 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 >.<code class=sc
1b60: 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 heme><span class
1b70: 3d 76 61 72 69 61 62 6c 65 3e 66 6f 72 6d 61 74 =variable>format
1b80: 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 29 20 </span></code>)
1b90: 6f 72 20 70 61 74 74 65 72 6e 20 6d 61 74 63 68 or pattern match
1ba0: 69 6e 67 20 28 61 73 20 69 6e 20 56 69 73 75 61 ing (as in Visua
1bb0: 6c 20 42 61 73 69 63 27 73 20 3c 63 6f 64 65 20 l Basic's <code
1bc0: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
1bd0: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
1be0: 65 3e 46 6f 72 6d 61 74 3c 2f 73 70 61 6e 3e 3c e>Format</span><
1bf0: 2f 63 6f 64 65 3e 2c 0a 3c 61 20 68 72 65 66 3d /code>,.<a href=
1c00: 22 23 42 49 42 49 54 45 4d 5f 36 22 3e 50 65 72 "#BIBITEM_6">Per
1c10: 6c 36 27 73 3c 2f 61 3e 20 3c 63 6f 64 65 20 63 l6's</a> <code c
1c20: 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 lass=scheme><spa
1c30: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
1c40: 3e 66 6f 72 6d 3c 2f 73 70 61 6e 3e 3c 2f 63 6f >form</span></co
1c50: 64 65 3e 2c 20 61 6e 64 20 53 51 4c 20 64 61 74 de>, and SQL dat
1c60: 65 20 66 6f 72 6d 61 74 73 29 2e 20 20 54 68 65 e formats). The
1c70: 0a 70 72 69 6d 61 72 79 20 64 69 73 61 64 76 61 .primary disadva
1c80: 6e 74 61 67 65 20 6f 66 20 74 65 6d 70 6c 61 74 ntage of templat
1c90: 65 73 20 69 73 20 74 68 65 20 72 65 6c 61 74 69 es is the relati
1ca0: 76 65 20 64 69 66 66 69 63 75 6c 74 79 20 28 75 ve difficulty (u
1cb0: 73 75 61 6c 6c 79 0a 69 6d 70 6f 73 73 69 62 69 sually.impossibi
1cc0: 6c 69 74 79 29 20 6f 66 20 65 78 74 65 6e 64 69 lity) of extendi
1cd0: 6e 67 20 74 68 65 6d 2c 20 74 68 65 69 72 20 6f ng them, their o
1ce0: 70 61 71 75 65 6e 65 73 73 2c 20 61 6e 64 20 74 paqueness, and t
1cf0: 68 65 0a 75 6e 72 65 61 64 61 62 69 6c 69 74 79 he.unreadability
1d00: 20 74 68 61 74 20 61 72 69 73 65 73 20 77 69 74 that arises wit
1d10: 68 20 63 6f 6d 70 6c 65 78 20 66 6f 72 6d 61 74 h complex format
1d20: 73 2e 20 20 54 65 6d 70 6c 61 74 65 73 20 61 72 s. Templates ar
1d30: 65 20 6e 6f 74 0a 77 69 74 68 6f 75 74 20 74 68 e not.without th
1d40: 65 69 72 20 61 64 76 61 6e 74 61 67 65 73 2c 20 eir advantages,
1d50: 62 75 74 20 74 68 65 79 20 61 72 65 20 61 6c 72 but they are alr
1d60: 65 61 64 79 20 61 64 64 72 65 73 73 65 64 20 62 eady addressed b
1d70: 79 20 6f 74 68 65 72 0a 6c 69 62 72 61 72 69 65 y other.librarie
1d80: 73 20 73 75 63 68 20 61 73 20 3c 61 20 68 72 65 s such as <a hre
1d90: 66 3d 22 23 42 49 42 49 54 45 4d 5f 33 22 3e 53 f="#BIBITEM_3">S
1da0: 52 46 49 2d 32 38 3c 2f 61 3e 20 61 6e 64 0a 3c RFI-28</a> and.<
1db0: 61 20 68 72 65 66 3d 22 23 42 49 42 49 54 45 4d a href="#BIBITEM
1dc0: 5f 34 22 3e 53 52 46 49 2d 34 38 3c 2f 61 3e 2e _4">SRFI-48</a>.
1dd0: 0a 3c 70 3e 0a 0a 54 68 69 73 20 6c 69 62 72 61 .<p>..This libra
1de0: 72 79 20 74 61 6b 65 73 20 61 20 63 6f 6d 62 69 ry takes a combi
1df0: 6e 61 74 6f 72 20 61 70 70 72 6f 61 63 68 2e 20 nator approach.
1e00: 20 46 6f 72 6d 61 74 73 20 61 72 65 20 6e 65 73 Formats are nes
1e10: 74 65 64 20 63 68 61 69 6e 73 0a 6f 66 20 63 6c ted chains.of cl
1e20: 6f 73 75 72 65 73 2c 20 77 68 69 63 68 20 61 72 osures, which ar
1e30: 65 20 63 61 6c 6c 65 64 20 74 6f 20 70 72 6f 64 e called to prod
1e40: 75 63 65 20 74 68 65 69 72 20 6f 75 74 70 75 74 uce their output
1e50: 20 61 73 20 6e 65 65 64 65 64 2e 0a 54 68 65 20 as needed..The
1e60: 70 72 69 6d 61 72 79 20 67 6f 61 6c 20 6f 66 20 primary goal of
1e70: 74 68 69 73 20 6c 69 62 72 61 72 79 20 69 73 20 this library is
1e80: 74 6f 20 68 61 76 65 2c 20 66 69 72 73 74 20 61 to have, first a
1e90: 6e 64 20 66 6f 72 65 6d 6f 73 74 2c 20 61 0a 6d nd foremost, a.m
1ea0: 61 78 69 6d 61 6c 6c 79 20 65 78 70 72 65 73 73 aximally express
1eb0: 69 76 65 20 61 6e 64 20 65 78 74 65 6e 73 69 62 ive and extensib
1ec0: 6c 65 20 66 6f 72 6d 61 74 74 69 6e 67 20 6c 69 le formatting li
1ed0: 62 72 61 72 79 2e 20 20 54 68 65 20 6e 65 78 74 brary. The next
1ee0: 0a 6d 6f 73 74 20 69 6d 70 6f 72 74 61 6e 74 20 .most important
1ef0: 67 6f 61 6c 20 69 73 20 73 63 61 6c 61 62 69 6c goal is scalabil
1f00: 69 74 79 20 2d 20 74 6f 20 62 65 20 61 62 6c 65 ity - to be able
1f10: 20 74 6f 20 68 61 6e 64 6c 65 0a 61 72 62 69 74 to handle.arbit
1f20: 72 61 72 69 6c 79 20 6c 61 72 67 65 20 6f 75 74 rarily large out
1f30: 70 75 74 20 61 6e 64 20 6e 6f 74 20 62 75 69 6c put and not buil
1f40: 64 20 69 6e 74 65 72 6d 65 64 69 61 74 65 20 72 d intermediate r
1f50: 65 73 75 6c 74 73 20 65 78 63 65 70 74 0a 77 68 esults except.wh
1f60: 65 72 65 20 6e 65 63 65 73 73 61 72 79 2e 20 20 ere necessary.
1f70: 54 68 65 20 74 68 69 72 64 20 67 6f 61 6c 20 69 The third goal i
1f80: 73 20 62 72 65 76 69 74 79 20 61 6e 64 20 65 61 s brevity and ea
1f90: 73 65 20 6f 66 20 75 73 65 2e 0a 3c 70 3e 0a 0a se of use..<p>..
1fa0: 3c 61 20 6e 61 6d 65 3d 22 53 45 43 54 49 4f 4e <a name="SECTION
1fb0: 5f 34 22 3e 3c 68 31 3e 34 26 6e 62 73 70 3b 26 _4"><h1>4 &
1fc0: 6e 62 73 70 3b 55 73 61 67 65 3c 2f 68 31 3e 0a nbsp;Usage</h1>.
1fd0: 0a 54 68 65 20 70 72 69 6d 61 72 79 20 69 6e 74 .The primary int
1fe0: 65 72 66 61 63 65 20 69 73 20 74 68 65 20 3c 63 erface is the <c
1ff0: 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
2000: 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 ><span class=var
2010: 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 70 61 6e 3e iable>fmt</span>
2020: 3c 2f 63 6f 64 65 3e 20 70 72 6f 63 65 64 75 72 </code> procedur
2030: 65 3a 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c e:.<p>..<code cl
2040: 61 73 73 3d 73 63 68 65 6d 65 3e 28 3c 73 70 61 ass=scheme>(<spa
2050: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
2060: 3e 66 6d 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 >fmt</span> <spa
2070: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
2080: 3e 26 6c 74 3b 6f 75 74 70 75 74 2d 64 65 73 74 ><output-dest
2090: 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 ></span> <spa
20a0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
20b0: 3e 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b 3c ><format><
20c0: 2f 73 70 61 6e 3e 20 2e 2e 2e 29 3c 2f 63 6f 64 /span> ...)</cod
20d0: 65 3e 0a 3c 70 3e 0a 0a 77 68 65 72 65 20 3c 63 e>.<p>..where <c
20e0: 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
20f0: 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 ><span class=var
2100: 69 61 62 6c 65 3e 26 6c 74 3b 6f 75 74 70 75 74 iable><output
2110: 2d 64 65 73 74 26 67 74 3b 3c 2f 73 70 61 6e 3e -dest></span>
2120: 3c 2f 63 6f 64 65 3e 20 68 61 73 20 74 68 65 20 </code> has the
2130: 73 61 6d 65 20 73 65 6d 61 6e 74 69 63 73 20 61 same semantics a
2140: 73 20 77 69 74 68 20 3c 63 6f 64 65 20 63 6c 61 s with <code cla
2150: 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 ss=scheme><span
2160: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 class=variable>f
2170: 6f 72 6d 61 74 3c 2f 73 70 61 6e 3e 3c 2f 63 6f ormat</span></co
2180: 64 65 3e 20 2d 0a 73 70 65 63 69 66 69 63 61 6c de> -.specifical
2190: 6c 79 20 69 74 20 63 61 6e 20 62 65 20 61 6e 20 ly it can be an
21a0: 6f 75 74 70 75 74 2d 70 6f 72 74 2c 20 3c 63 6f output-port, <co
21b0: 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
21c0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c <span class=bool
21d0: 65 61 6e 3e 23 74 3c 2f 73 70 61 6e 3e 3c 2f 63 ean>#t</span></c
21e0: 6f 64 65 3e 20 74 6f 20 69 6e 64 69 63 61 74 65 ode> to indicate
21f0: 20 74 68 65 20 63 75 72 72 65 6e 74 0a 6f 75 74 the current.out
2200: 70 75 74 20 70 6f 72 74 2c 20 6f 72 20 3c 63 6f put port, or <co
2210: 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
2220: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c <span class=bool
2230: 65 61 6e 3e 23 66 3c 2f 73 70 61 6e 3e 3c 2f 63 ean>#f</span></c
2240: 6f 64 65 3e 20 74 6f 20 61 63 63 75 6d 75 6c 61 ode> to accumula
2250: 74 65 20 6f 75 74 70 75 74 20 69 6e 74 6f 20 61 te output into a
2260: 20 73 74 72 69 6e 67 2e 0a 3c 70 3e 0a 0a 45 61 string..<p>..Ea
2270: 63 68 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 ch <code class=s
2280: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
2290: 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 66 s=variable><f
22a0: 6f 72 6d 61 74 26 67 74 3b 3c 2f 73 70 61 6e 3e ormat></span>
22b0: 3c 2f 63 6f 64 65 3e 20 73 68 6f 75 6c 64 20 62 </code> should b
22c0: 65 20 61 20 66 6f 72 6d 61 74 20 63 6c 6f 73 75 e a format closu
22d0: 72 65 20 61 73 20 64 69 73 63 75 73 73 65 64 20 re as discussed
22e0: 62 65 6c 6f 77 2e 20 20 41 73 20 61 0a 63 6f 6e below. As a.con
22f0: 76 65 6e 69 65 6e 63 65 2c 20 6e 6f 6e 2d 70 72 venience, non-pr
2300: 6f 63 65 64 75 72 65 20 61 72 67 75 6d 65 6e 74 ocedure argument
2310: 73 20 61 72 65 20 61 6c 73 6f 20 61 6c 6c 6f 77 s are also allow
2320: 65 64 20 61 6e 64 20 61 72 65 0a 66 6f 72 6d 61 ed and are.forma
2330: 74 74 65 64 20 73 69 6d 69 6c 61 72 20 74 6f 20 tted similar to
2340: 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
2350: 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 me><span class=v
2360: 61 72 69 61 62 6c 65 3e 64 69 73 70 6c 61 79 3c ariable>display<
2370: 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 73 /span></code>, s
2380: 6f 20 74 68 61 74 0a 3c 70 3e 0a 0a 3c 63 6f 64 o that.<p>..<cod
2390: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 28 e class=scheme>(
23a0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
23b0: 61 62 6c 65 3e 66 6d 74 3c 2f 73 70 61 6e 3e 20 able>fmt</span>
23c0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c <span class=bool
23d0: 65 61 6e 3e 23 66 3c 2f 73 70 61 6e 3e 20 3c 73 ean>#f</span> <s
23e0: 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 pan class=string
23f0: 3e 26 71 75 6f 74 3b 52 65 73 75 6c 74 3a 20 26 >"Result: &
2400: 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73 70 quot;</span> <sp
2410: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
2420: 65 3e 72 65 73 3c 2f 73 70 61 6e 3e 20 3c 73 70 e>res</span> <sp
2430: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
2440: 65 3e 6e 6c 3c 2f 73 70 61 6e 3e 29 3c 2f 63 6f e>nl</span>)</co
2450: 64 65 3e 0a 3c 70 3e 0a 0a 77 6f 75 6c 64 20 72 de>.<p>..would r
2460: 65 74 75 72 6e 20 74 68 65 20 73 74 72 69 6e 67 eturn the string
2470: 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 <code class=sch
2480: 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d eme><span class=
2490: 73 74 72 69 6e 67 3e 26 71 75 6f 74 3b 52 65 73 string>"Res
24a0: 75 6c 74 3a 20 34 32 6e 26 71 75 6f 74 3b 3c 2f ult: 42n"</
24b0: 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 61 73 span></code>, as
24c0: 73 75 6d 69 6e 67 20 3c 63 6f 64 65 20 63 6c 61 suming <code cla
24d0: 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 ss=scheme><span
24e0: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 52 class=variable>R
24f0: 45 53 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e ES</span></code>
2500: 20 69 73 20 62 6f 75 6e 64 0a 74 6f 20 3c 63 6f is bound.to <co
2510: 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
2520: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 <span class=numb
2530: 65 72 3e 34 32 3c 2f 73 70 61 6e 3e 3c 2f 63 6f er>42</span></co
2540: 64 65 3e 2e 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 de>..<p>..<code
2550: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
2560: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
2570: 65 3e 6e 6c 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 e>nl</span></cod
2580: 65 3e 20 69 73 20 74 68 65 20 6e 65 77 6c 69 6e e> is the newlin
2590: 65 20 66 6f 72 6d 61 74 20 63 6f 6d 62 69 6e 61 e format combina
25a0: 74 6f 72 2e 0a 3c 70 3e 0a 0a 3c 61 20 6e 61 6d tor..<p>..<a nam
25b0: 65 3d 22 53 45 43 54 49 4f 4e 5f 35 22 3e 3c 68 e="SECTION_5"><h
25c0: 31 3e 35 26 6e 62 73 70 3b 26 6e 62 73 70 3b 53 1>5 S
25d0: 70 65 63 69 66 69 63 61 74 69 6f 6e 3c 2f 68 31 pecification</h1
25e0: 3e 0a 0a 54 68 65 20 70 72 6f 63 65 64 75 72 65 >..The procedure
25f0: 20 6e 61 6d 65 73 20 68 61 76 65 20 67 6f 6e 65 names have gone
2600: 20 74 68 72 6f 75 67 68 20 73 65 76 65 72 61 6c through several
2610: 20 76 61 72 69 61 74 69 6f 6e 73 2c 20 61 6e 64 variations, and
2620: 20 49 27 6d 0a 73 74 69 6c 6c 20 6f 70 65 6e 20 I'm.still open
2630: 74 6f 20 6e 65 77 20 73 75 67 67 65 73 74 69 6f to new suggestio
2640: 6e 73 2e 20 20 54 68 65 20 63 75 72 72 65 6e 74 ns. The current
2650: 20 61 70 70 72 6f 61 63 68 20 69 73 20 74 6f 20 approach is to
2660: 75 73 65 0a 61 62 62 72 65 76 69 61 74 65 64 20 use.abbreviated
2670: 66 6f 72 6d 73 20 6f 66 20 73 74 61 6e 64 61 72 forms of standar
2680: 64 20 6f 75 74 70 75 74 20 70 72 6f 63 65 64 75 d output procedu
2690: 72 65 73 20 77 68 65 6e 20 64 65 66 69 6e 69 6e res when definin
26a0: 67 20 61 6e 0a 65 71 75 69 76 61 6c 65 6e 74 20 g an.equivalent
26b0: 66 6f 72 6d 61 74 20 63 6f 6d 62 69 6e 61 74 6f format combinato
26c0: 72 20 28 74 68 75 73 20 3c 63 6f 64 65 20 63 6c r (thus <code cl
26d0: 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e ass=scheme><span
26e0: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
26f0: 64 69 73 70 6c 61 79 3c 2f 73 70 61 6e 3e 3c 2f display</span></
2700: 63 6f 64 65 3e 20 62 65 63 6f 6d 65 73 20 3c 63 code> becomes <c
2710: 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
2720: 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 ><span class=var
2730: 69 61 62 6c 65 3e 64 73 70 3c 2f 73 70 61 6e 3e iable>dsp</span>
2740: 3c 2f 63 6f 64 65 3e 20 61 6e 64 0a 3c 63 6f 64 </code> and.<cod
2750: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c e class=scheme><
2760: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
2770: 62 6c 65 3e 77 72 69 74 65 3c 2f 73 70 61 6e 3e ble>write</span>
2780: 3c 2f 63 6f 64 65 3e 20 62 65 63 6f 6d 65 73 20 </code> becomes
2790: 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
27a0: 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 me><span class=v
27b0: 61 72 69 61 62 6c 65 3e 77 72 74 3c 2f 73 70 61 ariable>wrt</spa
27c0: 6e 3e 3c 2f 63 6f 64 65 3e 29 2c 20 61 6e 64 20 n></code>), and
27d0: 74 6f 20 75 73 65 20 61 6e 20 3c 63 6f 64 65 20 to use an <code
27e0: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
27f0: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
2800: 65 3e 66 6d 74 2d 3c 2f 73 70 61 6e 3e 3c 2f 63 e>fmt-</span></c
2810: 6f 64 65 3e 20 70 72 65 66 69 78 20 66 6f 72 0a ode> prefix for.
2820: 75 74 69 6c 69 74 69 65 73 20 61 6e 64 20 6c 65 utilities and le
2830: 73 73 20 63 6f 6d 6d 6f 6e 20 63 6f 6d 62 69 6e ss common combin
2840: 61 74 6f 72 73 2e 20 20 56 61 72 69 61 6e 74 73 ators. Variants
2850: 20 6f 66 20 74 68 65 20 73 61 6d 65 20 66 6f 72 of the same for
2860: 6d 61 74 74 65 72 0a 67 65 74 20 61 20 3c 63 6f matter.get a <co
2870: 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
2880: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
2890: 61 62 6c 65 3e 2f 26 6c 74 3b 76 61 72 69 61 6e able>/<varian
28a0: 74 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f t></span></co
28b0: 64 65 3e 20 73 75 66 66 69 78 2e 0a 3c 70 3e 0a de> suffix..<p>.
28c0: 0a 3c 61 20 6e 61 6d 65 3d 22 53 45 43 54 49 4f .<a name="SECTIO
28d0: 4e 5f 35 2e 31 22 3e 3c 68 32 3e 35 2e 31 26 6e N_5.1"><h2>5.1&n
28e0: 62 73 70 3b 26 6e 62 73 70 3b 46 6f 72 6d 61 74 bsp; Format
28f0: 74 69 6e 67 20 4f 62 6a 65 63 74 73 3c 2f 68 32 ting Objects</h2
2900: 3e 0a 0a 3c 68 33 3e 28 64 73 70 20 26 6c 74 3b >..<h3>(dsp <
2910: 6f 62 6a 26 67 74 3b 29 3c 2f 68 33 3e 0a 0a 4f obj>)</h3>..O
2920: 75 74 70 75 74 73 20 3c 63 6f 64 65 20 63 6c 61 utputs <code cla
2930: 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 ss=scheme><span
2940: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 class=variable>&
2950: 6c 74 3b 6f 62 6a 26 67 74 3b 3c 2f 73 70 61 6e lt;obj></span
2960: 3e 3c 2f 63 6f 64 65 3e 20 75 73 69 6e 67 20 3c ></code> using <
2970: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
2980: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
2990: 72 69 61 62 6c 65 3e 64 69 73 70 6c 61 79 3c 2f riable>display</
29a0: 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 73 65 6d span></code> sem
29b0: 61 6e 74 69 63 73 2e 20 20 53 70 65 63 69 66 69 antics. Specifi
29c0: 63 61 6c 6c 79 2c 20 73 74 72 69 6e 67 73 0a 61 cally, strings.a
29d0: 72 65 20 6f 75 74 70 75 74 20 77 69 74 68 6f 75 re output withou
29e0: 74 20 73 75 72 72 6f 75 6e 64 69 6e 67 20 71 75 t surrounding qu
29f0: 6f 74 65 73 20 6f 72 20 65 73 63 61 70 69 6e 67 otes or escaping
2a00: 20 61 6e 64 20 63 68 61 72 61 63 74 65 72 73 20 and characters
2a10: 61 72 65 0a 77 72 69 74 74 65 6e 20 61 73 20 69 are.written as i
2a20: 66 20 62 79 20 3c 63 6f 64 65 20 63 6c 61 73 73 f by <code class
2a30: 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c =scheme><span cl
2a40: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 77 72 69 ass=variable>wri
2a50: 74 65 2d 63 68 61 72 3c 2f 73 70 61 6e 3e 3c 2f te-char</span></
2a60: 63 6f 64 65 3e 2e 20 20 4f 74 68 65 72 20 6f 62 code>. Other ob
2a70: 6a 65 63 74 73 20 61 72 65 20 77 72 69 74 74 65 jects are writte
2a80: 6e 20 61 73 20 77 69 74 68 0a 3c 63 6f 64 65 20 n as with.<code
2a90: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
2aa0: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
2ab0: 65 3e 77 72 69 74 65 3c 2f 73 70 61 6e 3e 3c 2f e>write</span></
2ac0: 63 6f 64 65 3e 20 28 69 6e 63 6c 75 64 69 6e 67 code> (including
2ad0: 20 6e 65 73 74 65 64 20 73 74 72 69 6e 67 73 20 nested strings
2ae0: 61 6e 64 20 63 68 61 72 73 20 69 6e 73 69 64 65 and chars inside
2af0: 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 <code class=sch
2b00: 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d eme><span class=
2b10: 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 6f 62 6a variable><obj
2b20: 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 ></span></cod
2b30: 65 3e 29 2e 20 20 54 68 69 73 0a 69 73 20 74 68 e>). This.is th
2b40: 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 e default behavi
2b50: 6f 72 20 66 6f 72 20 74 6f 70 2d 6c 65 76 65 6c or for top-level
2b60: 20 66 6f 72 6d 61 74 73 20 69 6e 20 3c 63 6f 64 formats in <cod
2b70: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c e class=scheme><
2b80: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
2b90: 62 6c 65 3e 66 6d 74 3c 2f 73 70 61 6e 3e 3c 2f ble>fmt</span></
2ba0: 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 20 63 6c 61 code>, <code cla
2bb0: 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 ss=scheme><span
2bc0: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 class=variable>c
2bd0: 61 74 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e at</span></code>
2be0: 20 61 6e 64 0a 6d 6f 73 74 20 6f 74 68 65 72 20 and.most other
2bf0: 68 69 67 68 65 72 2d 6f 72 64 65 72 20 63 6f 6d higher-order com
2c00: 62 69 6e 61 74 6f 72 73 2e 0a 3c 70 3e 0a 0a 3c binators..<p>..<
2c10: 68 33 3e 28 77 72 74 20 26 6c 74 3b 6f 62 6a 26 h3>(wrt <obj&
2c20: 67 74 3b 29 3c 2f 68 33 3e 0a 0a 4f 75 74 70 75 gt;)</h3>..Outpu
2c30: 74 73 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 ts <code class=s
2c40: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
2c50: 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 6f s=variable><o
2c60: 62 6a 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 bj></span></c
2c70: 6f 64 65 3e 20 75 73 69 6e 67 20 3c 63 6f 64 65 ode> using <code
2c80: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
2c90: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
2ca0: 6c 65 3e 77 72 69 74 65 3c 2f 73 70 61 6e 3e 3c le>write</span><
2cb0: 2f 63 6f 64 65 3e 20 73 65 6d 61 6e 74 69 63 73 /code> semantics
2cc0: 2e 20 20 48 61 6e 64 6c 65 73 20 73 68 61 72 65 . Handles share
2cd0: 64 0a 73 74 72 75 63 74 75 72 65 73 20 61 73 20 d.structures as
2ce0: 69 6e 20 3c 61 20 68 72 65 66 3d 22 23 42 49 42 in <a href="#BIB
2cf0: 49 54 45 4d 5f 35 22 3e 53 52 46 49 2d 33 38 3c ITEM_5">SRFI-38<
2d00: 2f 61 3e 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 77 /a>..<p>..<h3>(w
2d10: 72 74 2f 75 6e 73 68 61 72 65 64 20 26 6c 74 3b rt/unshared <
2d20: 6f 62 6a 26 67 74 3b 29 3c 2f 68 33 3e 0a 0a 41 obj>)</h3>..A
2d30: 73 20 61 62 6f 76 65 2c 20 62 75 74 20 64 6f 65 s above, but doe
2d40: 73 6e 27 74 20 68 61 6e 64 6c 65 20 73 68 61 72 sn't handle shar
2d50: 65 64 20 73 74 72 75 63 74 75 72 65 73 2e 20 20 ed structures.
2d60: 49 6e 66 69 6e 69 74 65 20 6c 6f 6f 70 73 20 63 Infinite loops c
2d70: 61 6e 0a 73 74 69 6c 6c 20 62 65 20 61 76 6f 69 an.still be avoi
2d80: 64 65 64 20 69 66 20 75 73 65 64 20 69 6e 73 69 ded if used insi
2d90: 64 65 20 61 20 63 6f 6d 62 69 6e 61 74 6f 72 20 de a combinator
2da0: 74 68 61 74 20 74 72 75 6e 63 61 74 65 73 20 64 that truncates d
2db0: 61 74 61 20 28 73 65 65 0a 3c 63 6f 64 65 20 63 ata (see.<code c
2dc0: 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 lass=scheme><spa
2dd0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
2de0: 3e 74 72 69 6d 3c 2f 73 70 61 6e 3e 3c 2f 63 6f >trim</span></co
2df0: 64 65 3e 20 61 6e 64 20 3c 63 6f 64 65 20 63 6c de> and <code cl
2e00: 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e ass=scheme><span
2e10: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
2e20: 66 69 74 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 fit</span></code
2e30: 3e 20 62 65 6c 6f 77 29 2e 0a 3c 70 3e 0a 0a 3c > below)..<p>..<
2e40: 68 33 3e 28 70 72 65 74 74 79 20 26 6c 74 3b 6f h3>(pretty <o
2e50: 62 6a 26 67 74 3b 29 3c 2f 68 33 3e 0a 0a 50 72 bj>)</h3>..Pr
2e60: 65 74 74 79 2d 70 72 69 6e 74 73 20 3c 63 6f 64 etty-prints <cod
2e70: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c e class=scheme><
2e80: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
2e90: 62 6c 65 3e 26 6c 74 3b 6f 62 6a 26 67 74 3b 3c ble><obj><
2ea0: 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2e 20 20 /span></code>.
2eb0: 41 6c 73 6f 20 68 61 6e 64 6c 65 73 20 73 68 61 Also handles sha
2ec0: 72 65 64 20 73 74 72 75 63 74 75 72 65 73 2e 20 red structures.
2ed0: 20 55 6e 6c 69 6b 65 20 6d 61 6e 79 0a 6f 74 68 Unlike many.oth
2ee0: 65 72 20 70 72 65 74 74 79 20 70 72 69 6e 74 65 er pretty printe
2ef0: 72 73 2c 20 76 65 63 74 6f 72 73 20 61 6e 64 20 rs, vectors and
2f00: 64 61 74 61 20 6c 69 73 74 73 20 28 6c 69 73 74 data lists (list
2f10: 73 20 74 68 61 74 20 64 6f 6e 27 74 20 62 65 67 s that don't beg
2f20: 69 6e 0a 77 69 74 68 20 61 20 28 6e 65 73 74 65 in.with a (neste
2f30: 64 29 20 73 79 6d 62 6f 6c 29 2c 20 61 72 65 20 d) symbol), are
2f40: 70 72 69 6e 74 65 64 20 69 6e 20 74 61 62 75 6c printed in tabul
2f50: 61 72 20 66 6f 72 6d 61 74 20 77 68 65 6e 20 74 ar format when t
2f60: 68 65 72 65 27 73 0a 72 6f 6f 6d 2c 20 67 72 65 here's.room, gre
2f70: 61 74 6c 79 20 73 61 76 69 6e 67 20 76 65 72 74 atly saving vert
2f80: 69 63 61 6c 20 73 70 61 63 65 2e 0a 3c 70 3e 0a ical space..<p>.
2f90: 0a 3c 68 33 3e 28 70 72 65 74 74 79 2f 75 6e 73 .<h3>(pretty/uns
2fa0: 68 61 72 65 64 20 26 6c 74 3b 6f 62 6a 26 67 74 hared <obj>
2fb0: 3b 29 3c 2f 68 33 3e 0a 0a 41 73 20 61 62 6f 76 ;)</h3>..As abov
2fc0: 65 20 62 75 74 20 77 69 74 68 6f 75 74 20 73 68 e but without sh
2fd0: 61 72 69 6e 67 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e aring..<p>..<h3>
2fe0: 28 73 6c 61 73 68 69 66 69 65 64 20 26 6c 74 3b (slashified <
2ff0: 73 74 72 26 67 74 3b 20 5b 26 6c 74 3b 71 75 6f str> [<quo
3000: 74 65 2d 63 68 26 67 74 3b 20 26 6c 74 3b 65 73 te-ch> <es
3010: 63 2d 63 68 26 67 74 3b 20 26 6c 74 3b 72 65 6e c-ch> <ren
3020: 61 6d 65 72 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a amer>])</h3>.
3030: 0a 4f 75 74 70 75 74 73 20 74 68 65 20 73 74 72 .Outputs the str
3040: 69 6e 67 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d ing <code class=
3050: 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 scheme><span cla
3060: 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b ss=variable><
3070: 73 74 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f str></span></
3080: 63 6f 64 65 3e 2c 20 65 73 63 61 70 69 6e 67 20 code>, escaping
3090: 61 6e 79 20 71 75 6f 74 65 20 6f 72 20 65 73 63 any quote or esc
30a0: 61 70 65 20 63 68 61 72 61 63 74 65 72 73 2e 0a ape characters..
30b0: 49 66 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 If <code class=s
30c0: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
30d0: 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 65 s=variable><e
30e0: 73 63 2d 63 68 26 67 74 3b 3c 2f 73 70 61 6e 3e sc-ch></span>
30f0: 3c 2f 63 6f 64 65 3e 20 69 73 20 3c 63 6f 64 65 </code> is <code
3100: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
3110: 70 61 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c 65 61 pan class=boolea
3120: 6e 3e 23 66 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 n>#f</span></cod
3130: 65 3e 20 65 73 63 61 70 65 73 20 6f 6e 6c 79 20 e> escapes only
3140: 74 68 65 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d the <code class=
3150: 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 scheme><span cla
3160: 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b ss=variable><
3170: 71 75 6f 74 65 2d 63 68 26 67 74 3b 3c 2f 73 70 quote-ch></sp
3180: 61 6e 3e 3c 2f 63 6f 64 65 3e 20 62 79 0a 64 6f an></code> by.do
3190: 75 62 6c 69 6e 67 20 69 74 2c 20 61 73 20 69 6e ubling it, as in
31a0: 20 53 51 4c 20 73 74 72 69 6e 67 73 20 61 6e 64 SQL strings and
31b0: 20 43 53 56 20 76 61 6c 75 65 73 2e 20 20 49 66 CSV values. If
31c0: 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 <code class=sch
31d0: 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d eme><span class=
31e0: 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 72 65 6e variable><ren
31f0: 61 6d 65 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c amer></span><
3200: 2f 63 6f 64 65 3e 20 69 73 0a 70 72 6f 76 69 64 /code> is.provid
3210: 65 64 2c 20 69 74 20 73 68 6f 75 6c 64 20 62 65 ed, it should be
3220: 20 61 20 70 72 6f 63 65 64 75 72 65 20 6f 66 20 a procedure of
3230: 6f 6e 65 20 63 68 61 72 61 63 74 65 72 20 77 68 one character wh
3240: 69 63 68 20 6d 61 70 73 20 74 68 61 74 0a 63 68 ich maps that.ch
3250: 61 72 61 63 74 65 72 20 74 6f 20 69 74 73 20 65 aracter to its e
3260: 73 63 61 70 65 20 76 61 6c 75 65 2c 20 65 2e 67 scape value, e.g
3270: 2e 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 . <code class=sc
3280: 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 heme><span class
3290: 3d 63 68 61 72 3e 23 5c 6e 65 77 6c 69 6e 65 3c =char>#\newline<
32a0: 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
32b0: 73 73 3d 6b 65 79 77 6f 72 64 3e 3d 26 67 74 3b ss=keyword>=>
32c0: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
32d0: 61 73 73 3d 63 68 61 72 3e 23 5c 6e 3c 2f 73 70 ass=char>#\n</sp
32e0: 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 6f 72 20 3c an></code>, or <
32f0: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
3300: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 62 6f e><span class=bo
3310: 6f 6c 65 61 6e 3e 23 66 3c 2f 73 70 61 6e 3e 3c olean>#f</span><
3320: 2f 63 6f 64 65 3e 20 69 66 0a 74 68 65 72 65 20 /code> if.there
3330: 69 73 20 6e 6f 20 65 73 63 61 70 65 20 76 61 6c is no escape val
3340: 75 65 2e 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 63 ue..<p>..<code c
3350: 6c 61 73 73 3d 73 63 68 65 6d 65 3e 28 3c 73 70 lass=scheme>(<sp
3360: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
3370: 65 3e 66 6d 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 e>fmt</span> <sp
3380: 61 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c 65 61 6e an class=boolean
3390: 3e 23 66 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 >#f</span> (<spa
33a0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
33b0: 3e 73 6c 61 73 68 69 66 69 65 64 3c 2f 73 70 61 >slashified</spa
33c0: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 n> <span class=s
33d0: 74 72 69 6e 67 3e 26 71 75 6f 74 3b 68 69 2c 20 tring>"hi,
33e0: 26 71 75 6f 74 3b 62 6f 62 21 26 71 75 6f 74 3b "bob!"
33f0: 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 29 29 3c "</span>))<
3400: 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 3c 63 6f 64 /code>.<p>..<cod
3410: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c e class=scheme><
3420: 73 70 61 6e 20 63 6c 61 73 73 3d 6b 65 79 77 6f span class=keywo
3430: 72 64 3e 3d 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 rd>=></span>
3440: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 <span class=stri
3450: 6e 67 3e 26 71 75 6f 74 3b 68 69 2c 20 26 71 75 ng>"hi, &qu
3460: 6f 74 3b 62 6f 62 21 26 71 75 6f 74 3b 26 71 75 ot;bob!"&qu
3470: 6f 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 ot;</span></code
3480: 3e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 6d 61 79 62 >.<p>..<h3>(mayb
3490: 65 2d 73 6c 61 73 68 69 66 69 65 64 20 26 6c 74 e-slashified <
34a0: 3b 73 74 72 26 67 74 3b 20 26 6c 74 3b 70 72 65 ;str> <pre
34b0: 64 26 67 74 3b 20 5b 26 6c 74 3b 71 75 6f 74 65 d> [<quote
34c0: 2d 63 68 26 67 74 3b 20 26 6c 74 3b 65 73 63 2d -ch> <esc-
34d0: 63 68 26 67 74 3b 20 26 6c 74 3b 72 65 6e 61 6d ch> <renam
34e0: 65 72 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a 4c er>])</h3>..L
34f0: 69 6b 65 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d ike <code class=
3500: 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 scheme><span cla
3510: 73 73 3d 76 61 72 69 61 62 6c 65 3e 73 6c 61 73 ss=variable>slas
3520: 68 69 66 69 65 64 3c 2f 73 70 61 6e 3e 3c 2f 63 hified</span></c
3530: 6f 64 65 3e 2c 20 62 75 74 20 66 69 72 73 74 20 ode>, but first
3540: 63 68 65 63 6b 73 20 69 66 20 61 6e 79 20 71 75 checks if any qu
3550: 6f 74 69 6e 67 20 69 73 20 72 65 71 75 69 72 65 oting is require
3560: 64 20 28 62 79 0a 74 68 65 20 65 78 69 73 74 65 d (by.the existe
3570: 6e 63 65 20 6f 66 20 65 69 74 68 65 72 20 61 6e nce of either an
3580: 79 20 71 75 6f 74 65 20 6f 72 20 65 73 63 61 70 y quote or escap
3590: 65 20 63 68 61 72 61 63 74 65 72 73 2c 20 6f 72 e characters, or
35a0: 20 61 6e 79 0a 63 68 61 72 61 63 74 65 72 20 6d any.character m
35b0: 61 74 63 68 69 6e 67 20 3c 63 6f 64 65 20 63 6c atching <code cl
35c0: 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e ass=scheme><span
35d0: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
35e0: 26 6c 74 3b 70 72 65 64 26 67 74 3b 3c 2f 73 70 <pred></sp
35f0: 61 6e 3e 3c 2f 63 6f 64 65 3e 29 2c 20 61 6e 64 an></code>), and
3600: 20 69 66 20 73 6f 20 6f 75 74 70 75 74 73 20 74 if so outputs t
3610: 68 65 20 73 74 72 69 6e 67 20 69 6e 20 71 75 6f he string in quo
3620: 74 65 73 0a 61 6e 64 20 77 69 74 68 20 65 73 63 tes.and with esc
3630: 61 70 65 73 2e 20 20 4f 74 68 65 72 77 69 73 65 apes. Otherwise
3640: 20 6f 75 74 70 75 74 73 20 74 68 65 20 73 74 72 outputs the str
3650: 69 6e 67 20 61 73 20 69 73 2e 0a 3c 70 3e 0a 0a ing as is..<p>..
3660: 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
3670: 6d 65 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d me>(<span class=
3680: 76 61 72 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 70 variable>fmt</sp
3690: 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
36a0: 62 6f 6f 6c 65 61 6e 3e 23 66 3c 2f 73 70 61 6e boolean>#f</span
36b0: 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 > (<span class=v
36c0: 61 72 69 61 62 6c 65 3e 6d 61 79 62 65 2d 73 6c ariable>maybe-sl
36d0: 61 73 68 69 66 69 65 64 3c 2f 73 70 61 6e 3e 20 ashified</span>
36e0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 <span class=stri
36f0: 6e 67 3e 26 71 75 6f 74 3b 66 6f 6f 26 71 75 6f ng>"foo&quo
3700: 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 t;</span> <span
3710: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 class=variable>c
3720: 68 61 72 2d 77 68 69 74 65 73 70 61 63 65 3f 3c har-whitespace?<
3730: 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
3740: 73 73 3d 63 68 61 72 3e 23 5c 26 71 75 6f 74 3b ss=char>#\"
3750: 3c 2f 73 70 61 6e 3e 29 29 3c 2f 63 6f 64 65 3e </span>))</code>
3760: 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 73 .<p>..<code clas
3770: 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 s=scheme><span c
3780: 6c 61 73 73 3d 6b 65 79 77 6f 72 64 3e 3d 26 67 lass=keyword>=&g
3790: 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 t;</span> <span
37a0: 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 class=string>&qu
37b0: 6f 74 3b 66 6f 6f 26 71 75 6f 74 3b 3c 2f 73 70 ot;foo"</sp
37c0: 61 6e 3e 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a an></code>.<p>..
37d0: 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
37e0: 6d 65 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d me>(<span class=
37f0: 76 61 72 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 70 variable>fmt</sp
3800: 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
3810: 62 6f 6f 6c 65 61 6e 3e 23 66 3c 2f 73 70 61 6e boolean>#f</span
3820: 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 > (<span class=v
3830: 61 72 69 61 62 6c 65 3e 6d 61 79 62 65 2d 73 6c ariable>maybe-sl
3840: 61 73 68 69 66 69 65 64 3c 2f 73 70 61 6e 3e 20 ashified</span>
3850: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 <span class=stri
3860: 6e 67 3e 26 71 75 6f 74 3b 66 6f 6f 20 62 61 72 ng>"foo bar
3870: 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73 "</span> <s
3880: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
3890: 6c 65 3e 63 68 61 72 2d 77 68 69 74 65 73 70 61 le>char-whitespa
38a0: 63 65 3f 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e ce?</span> <span
38b0: 20 63 6c 61 73 73 3d 63 68 61 72 3e 23 5c 26 71 class=char>#\&q
38c0: 75 6f 74 3b 3c 2f 73 70 61 6e 3e 29 29 3c 2f 63 uot;</span>))</c
38d0: 6f 64 65 3e 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 ode>.<p>..<code
38e0: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
38f0: 61 6e 20 63 6c 61 73 73 3d 6b 65 79 77 6f 72 64 an class=keyword
3900: 3e 3d 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73 >=></span> <s
3910: 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 pan class=string
3920: 3e 26 71 75 6f 74 3b 26 71 75 6f 74 3b 66 6f 6f >""foo
3930: 20 62 61 72 26 71 75 6f 74 3b 26 71 75 6f 74 3b bar""
3940: 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 0a 3c </span></code>.<
3950: 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d p>..<code class=
3960: 73 63 68 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c scheme>(<span cl
3970: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 ass=variable>fmt
3980: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
3990: 61 73 73 3d 62 6f 6f 6c 65 61 6e 3e 23 66 3c 2f ass=boolean>#f</
39a0: 73 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 span> (<span cla
39b0: 73 73 3d 76 61 72 69 61 62 6c 65 3e 6d 61 79 62 ss=variable>mayb
39c0: 65 2d 73 6c 61 73 68 69 66 69 65 64 3c 2f 73 70 e-slashified</sp
39d0: 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
39e0: 73 74 72 69 6e 67 3e 26 71 75 6f 74 3b 66 6f 6f string>"foo
39f0: 26 71 75 6f 74 3b 62 61 72 26 71 75 6f 74 3b 62 "bar"b
3a00: 61 7a 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 20 az"</span>
3a10: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
3a20: 61 62 6c 65 3e 63 68 61 72 2d 77 68 69 74 65 73 able>char-whites
3a30: 70 61 63 65 3f 3c 2f 73 70 61 6e 3e 20 3c 73 70 pace?</span> <sp
3a40: 61 6e 20 63 6c 61 73 73 3d 63 68 61 72 3e 23 5c an class=char>#\
3a50: 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 29 29 3c "</span>))<
3a60: 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 3c 63 6f 64 /code>.<p>..<cod
3a70: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c e class=scheme><
3a80: 73 70 61 6e 20 63 6c 61 73 73 3d 6b 65 79 77 6f span class=keywo
3a90: 72 64 3e 3d 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 rd>=></span>
3aa0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 <span class=stri
3ab0: 6e 67 3e 26 71 75 6f 74 3b 26 71 75 6f 74 3b 66 ng>""f
3ac0: 6f 6f 26 71 75 6f 74 3b 62 61 72 26 71 75 6f 74 oo"bar"
3ad0: 3b 62 61 7a 26 71 75 6f 74 3b 26 71 75 6f 74 3b ;baz""
3ae0: 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 0a 3c </span></code>.<
3af0: 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 53 45 43 p>..<a name="SEC
3b00: 54 49 4f 4e 5f 35 2e 32 22 3e 3c 68 32 3e 35 2e TION_5.2"><h2>5.
3b10: 32 26 6e 62 73 70 3b 26 6e 62 73 70 3b 46 6f 72 2 For
3b20: 6d 61 74 74 69 6e 67 20 4e 75 6d 62 65 72 73 3c matting Numbers<
3b30: 2f 68 32 3e 0a 0a 3c 68 33 3e 28 6e 75 6d 20 26 /h2>..<h3>(num &
3b40: 6c 74 3b 6e 26 67 74 3b 20 5b 26 6c 74 3b 72 61 lt;n> [<ra
3b50: 64 69 78 26 67 74 3b 20 26 6c 74 3b 70 72 65 63 dix> <prec
3b60: 69 73 69 6f 6e 26 67 74 3b 20 26 6c 74 3b 73 69 ision> <si
3b70: 67 6e 26 67 74 3b 20 26 6c 74 3b 63 6f 6d 6d 61 gn> <comma
3b80: 26 67 74 3b 20 26 6c 74 3b 63 6f 6d 6d 61 2d 73 > <comma-s
3b90: 65 70 26 67 74 3b 20 26 6c 74 3b 64 65 63 69 6d ep> <decim
3ba0: 61 6c 2d 73 65 70 26 67 74 3b 5d 29 3c 2f 68 33 al-sep>])</h3
3bb0: 3e 0a 0a 46 6f 72 6d 61 74 73 20 61 20 73 69 6e >..Formats a sin
3bc0: 67 6c 65 20 6e 75 6d 62 65 72 20 3c 63 6f 64 65 gle number <code
3bd0: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
3be0: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
3bf0: 6c 65 3e 26 6c 74 3b 6e 26 67 74 3b 3c 2f 73 70 le><n></sp
3c00: 61 6e 3e 3c 2f 63 6f 64 65 3e 2e 20 20 59 6f 75 an></code>. You
3c10: 20 63 61 6e 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 can optionally
3c20: 73 70 65 63 69 66 79 20 61 6e 79 0a 3c 63 6f 64 specify any.<cod
3c30: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c e class=scheme><
3c40: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
3c50: 62 6c 65 3e 26 6c 74 3b 72 61 64 69 78 26 67 74 ble><radix>
3c60: 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 ;</span></code>
3c70: 66 72 6f 6d 20 32 20 74 6f 20 33 36 20 28 65 76 from 2 to 36 (ev
3c80: 65 6e 20 69 66 20 3c 63 6f 64 65 20 63 6c 61 73 en if <code clas
3c90: 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 s=scheme><span c
3ca0: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c lass=variable>&l
3cb0: 74 3b 6e 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f t;n></span></
3cc0: 63 6f 64 65 3e 20 69 73 6e 27 74 20 61 6e 20 69 code> isn't an i
3cd0: 6e 74 65 67 65 72 29 2e 0a 3c 63 6f 64 65 20 63 nteger)..<code c
3ce0: 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 lass=scheme><spa
3cf0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
3d00: 3e 26 6c 74 3b 70 72 65 63 69 73 69 6f 6e 26 67 ><precision&g
3d10: 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e t;</span></code>
3d20: 20 66 6f 72 63 65 73 20 61 20 66 69 78 65 64 2d forces a fixed-
3d30: 70 6f 69 6e 74 20 66 6f 72 6d 61 74 2e 0a 3c 70 point format..<p
3d40: 3e 0a 0a 41 20 3c 63 6f 64 65 20 63 6c 61 73 73 >..A <code class
3d50: 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c =scheme><span cl
3d60: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 ass=variable><
3d70: 3b 73 69 67 6e 26 67 74 3b 3c 2f 73 70 61 6e 3e ;sign></span>
3d80: 3c 2f 63 6f 64 65 3e 20 6f 66 20 3c 63 6f 64 65 </code> of <code
3d90: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
3da0: 70 61 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c 65 61 pan class=boolea
3db0: 6e 3e 23 74 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 n>#t</span></cod
3dc0: 65 3e 20 69 6e 64 69 63 61 74 65 73 20 74 6f 20 e> indicates to
3dd0: 6f 75 74 70 75 74 20 61 20 70 6c 75 73 20 73 69 output a plus si
3de0: 67 6e 20 28 2b 29 20 66 6f 72 20 70 6f 73 69 74 gn (+) for posit
3df0: 69 76 65 0a 69 6e 74 65 67 65 72 73 2e 20 20 48 ive.integers. H
3e00: 6f 77 65 76 65 72 2c 20 69 66 20 3c 63 6f 64 65 owever, if <code
3e10: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
3e20: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
3e30: 6c 65 3e 26 6c 74 3b 73 69 67 6e 26 67 74 3b 3c le><sign><
3e40: 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 69 73 /span></code> is
3e50: 20 61 20 63 68 61 72 61 63 74 65 72 2c 20 69 74 a character, it
3e60: 20 6d 65 61 6e 73 20 74 6f 20 77 72 61 70 20 74 means to wrap t
3e70: 68 65 0a 6e 75 6d 62 65 72 20 77 69 74 68 20 74 he.number with t
3e80: 68 61 74 20 63 68 61 72 61 63 74 65 72 20 61 6e hat character an
3e90: 64 20 69 74 73 20 6d 69 72 72 6f 72 20 6f 70 70 d its mirror opp
3ea0: 6f 73 69 74 65 20 69 66 20 74 68 65 20 6e 75 6d osite if the num
3eb0: 62 65 72 20 69 73 0a 6e 65 67 61 74 69 76 65 2e ber is.negative.
3ec0: 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 3c For example, <
3ed0: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
3ee0: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 63 68 e><span class=ch
3ef0: 61 72 3e 23 5c 28 3c 2f 73 70 61 6e 3e 3c 2f 63 ar>#\(</span></c
3f00: 6f 64 65 3e 20 70 72 69 6e 74 73 20 6e 65 67 61 ode> prints nega
3f10: 74 69 76 65 20 6e 75 6d 62 65 72 73 20 69 6e 20 tive numbers in
3f20: 70 61 72 65 6e 74 68 65 73 69 73 2c 0a 66 69 6e parenthesis,.fin
3f30: 61 6e 63 69 61 6c 20 73 74 79 6c 65 3a 20 3c 63 ancial style: <c
3f40: 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
3f50: 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 6d ><span class=num
3f60: 62 65 72 3e 2d 33 2e 31 34 3c 2f 73 70 61 6e 3e ber>-3.14</span>
3f70: 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6b 65 79 <span class=key
3f80: 77 6f 72 64 3e 3d 26 67 74 3b 3c 2f 73 70 61 6e word>=></span
3f90: 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e > (<span class=n
3fa0: 75 6d 62 65 72 3e 33 2e 31 34 3c 2f 73 70 61 6e umber>3.14</span
3fb0: 3e 29 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 3c >)</code>.<p>..<
3fc0: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
3fd0: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
3fe0: 72 69 61 62 6c 65 3e 26 6c 74 3b 63 6f 6d 6d 61 riable><comma
3ff0: 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 ></span></cod
4000: 65 3e 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 e> is an integer
4010: 20 73 70 65 63 69 66 79 69 6e 67 20 74 68 65 20 specifying the
4020: 6e 75 6d 62 65 72 20 6f 66 20 64 69 67 69 74 73 number of digits
4030: 20 62 65 74 77 65 65 6e 0a 63 6f 6d 6d 61 73 2e between.commas.
4040: 20 20 56 61 72 69 61 62 6c 65 20 6c 65 6e 67 74 Variable lengt
4050: 68 2c 20 61 73 20 69 6e 20 73 75 62 63 6f 6e 74 h, as in subcont
4060: 69 6e 65 6e 74 61 6c 2d 73 74 79 6c 65 2c 20 69 inental-style, i
4070: 73 20 6e 6f 74 20 79 65 74 0a 73 75 70 70 6f 72 s not yet.suppor
4080: 74 65 64 2e 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 ted..<p>..<code
4090: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
40a0: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
40b0: 65 3e 26 6c 74 3b 63 6f 6d 6d 61 2d 73 65 70 26 e><comma-sep&
40c0: 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 gt;</span></code
40d0: 3e 20 69 73 20 74 68 65 20 63 68 61 72 61 63 74 > is the charact
40e0: 65 72 20 74 6f 20 75 73 65 20 66 6f 72 20 63 6f er to use for co
40f0: 6d 6d 61 73 2c 20 64 65 66 61 75 6c 74 69 6e 67 mmas, defaulting
4100: 20 74 6f 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d to <code class=
4110: 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 scheme><span cla
4120: 73 73 3d 63 68 61 72 3e 23 5c 2c 3c 2f 73 70 61 ss=char>#\,</spa
4130: 6e 3e 3c 2f 63 6f 64 65 3e 2e 0a 3c 70 3e 0a 0a n></code>..<p>..
4140: 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
4150: 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 me><span class=v
4160: 61 72 69 61 62 6c 65 3e 26 6c 74 3b 64 65 63 69 ariable><deci
4170: 6d 61 6c 2d 73 65 70 26 67 74 3b 3c 2f 73 70 61 mal-sep></spa
4180: 6e 3e 3c 2f 63 6f 64 65 3e 20 69 73 20 74 68 65 n></code> is the
4190: 20 63 68 61 72 61 63 74 65 72 20 74 6f 20 75 73 character to us
41a0: 65 20 66 6f 72 20 64 65 63 69 6d 61 6c 73 2c 20 e for decimals,
41b0: 64 65 66 61 75 6c 74 69 6e 67 20 74 6f 0a 3c 63 defaulting to.<c
41c0: 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
41d0: 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 63 68 61 ><span class=cha
41e0: 72 3e 23 5c 2e 3c 2f 73 70 61 6e 3e 3c 2f 63 6f r>#\.</span></co
41f0: 64 65 3e 2c 20 6f 72 20 74 6f 20 3c 63 6f 64 65 de>, or to <code
4200: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
4210: 70 61 6e 20 63 6c 61 73 73 3d 63 68 61 72 3e 23 pan class=char>#
4220: 5c 2c 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e \,</span></code>
4230: 20 28 45 75 72 6f 70 65 61 6e 20 73 74 79 6c 65 (European style
4240: 29 20 69 66 20 3c 63 6f 64 65 20 63 6c 61 73 73 ) if <code class
4250: 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c =scheme><span cl
4260: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 ass=variable><
4270: 3b 63 6f 6d 6d 61 2d 73 65 70 26 67 74 3b 3c 2f ;comma-sep></
4280: 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 69 73 20 span></code> is
4290: 61 6c 72 65 61 64 79 0a 3c 63 6f 64 65 20 63 6c already.<code cl
42a0: 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e ass=scheme><span
42b0: 20 63 6c 61 73 73 3d 63 68 61 72 3e 23 5c 2e 3c class=char>#\.<
42c0: 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2e 0a 3c /span></code>..<
42d0: 70 3e 0a 0a 54 68 65 73 65 20 70 61 72 61 6d 65 p>..These parame
42e0: 74 65 72 73 20 6d 61 79 20 73 65 65 6d 20 75 6e ters may seem un
42f0: 77 69 65 6c 64 79 2c 20 62 75 74 20 74 68 65 79 wieldy, but they
4300: 20 63 61 6e 20 61 6c 73 6f 20 74 61 6b 65 20 74 can also take t
4310: 68 65 69 72 0a 64 65 66 61 75 6c 74 73 20 66 72 heir.defaults fr
4320: 6f 6d 20 73 74 61 74 65 20 76 61 72 69 61 62 6c om state variabl
4330: 65 73 2c 20 64 65 73 63 72 69 62 65 64 20 62 65 es, described be
4340: 6c 6f 77 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 6e low..<p>..<h3>(n
4350: 75 6d 2f 63 6f 6d 6d 61 20 26 6c 74 3b 6e 26 67 um/comma <n&g
4360: 74 3b 20 5b 26 6c 74 3b 62 61 73 65 26 67 74 3b t; [<base>
4370: 20 26 6c 74 3b 70 72 65 63 69 73 69 6f 6e 26 67 <precision&g
4380: 74 3b 20 26 6c 74 3b 73 69 67 6e 26 67 74 3b 5d t; <sign>]
4390: 29 3c 2f 68 33 3e 0a 0a 53 68 6f 72 74 63 75 74 )</h3>..Shortcut
43a0: 20 66 6f 72 20 3c 63 6f 64 65 20 63 6c 61 73 73 for <code class
43b0: 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c =scheme><span cl
43c0: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 6e 75 6d ass=variable>num
43d0: 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 74 </span></code> t
43e0: 6f 20 70 72 69 6e 74 20 77 69 74 68 20 63 6f 6d o print with com
43f0: 6d 61 73 2e 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 mas..<p>..<code
4400: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 28 3c 73 class=scheme>(<s
4410: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
4420: 6c 65 3e 66 6d 74 3c 2f 73 70 61 6e 3e 20 3c 73 le>fmt</span> <s
4430: 70 61 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c 65 61 pan class=boolea
4440: 6e 3e 23 66 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 n>#f</span> (<sp
4450: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
4460: 65 3e 6e 75 6d 2f 63 6f 6d 6d 61 3c 2f 73 70 61 e>num/comma</spa
4470: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e n> <span class=n
4480: 75 6d 62 65 72 3e 31 32 33 34 35 36 37 3c 2f 73 umber>1234567</s
4490: 70 61 6e 3e 29 29 3c 2f 63 6f 64 65 3e 0a 3c 70 pan>))</code>.<p
44a0: 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 >..<code class=s
44b0: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
44c0: 73 3d 6b 65 79 77 6f 72 64 3e 3d 26 67 74 3b 3c s=keyword>=><
44d0: 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
44e0: 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 3b ss=string>"
44f0: 31 2c 32 33 34 2c 35 36 37 26 71 75 6f 74 3b 3c 1,234,567"<
4500: 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 0a 3c 70 /span></code>.<p
4510: 3e 0a 0a 3c 68 33 3e 28 6e 75 6d 2f 73 69 20 26 >..<h3>(num/si &
4520: 6c 74 3b 6e 26 67 74 3b 20 5b 26 6c 74 3b 62 61 lt;n> [<ba
4530: 73 65 26 67 74 3b 20 26 6c 74 3b 73 75 66 66 69 se> <suffi
4540: 78 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a 41 62 x>])</h3>..Ab
4550: 62 72 65 76 69 61 74 65 73 20 3c 63 6f 64 65 20 breviates <code
4560: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
4570: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
4580: 65 3e 26 6c 74 3b 6e 26 67 74 3b 3c 2f 73 70 61 e><n></spa
4590: 6e 3e 3c 2f 63 6f 64 65 3e 20 77 69 74 68 20 61 n></code> with a
45a0: 6e 20 53 49 20 73 75 66 66 69 78 20 61 73 20 69 n SI suffix as i
45b0: 6e 20 74 68 65 20 2d 68 20 6f 72 20 2d 2d 73 69 n the -h or --si
45c0: 20 6f 70 74 69 6f 6e 20 74 6f 0a 6d 61 6e 79 20 option to.many
45d0: 47 4e 55 20 63 6f 6d 6d 61 6e 64 73 2e 20 20 54 GNU commands. T
45e0: 68 65 20 62 61 73 65 20 64 65 66 61 75 6c 74 73 he base defaults
45f0: 20 74 6f 20 31 30 32 34 2c 20 75 73 69 6e 67 20 to 1024, using
4600: 73 75 66 66 69 78 20 6e 61 6d 65 73 0a 6c 69 6b suffix names.lik
4610: 65 20 4b 69 2c 20 4d 69 2c 20 47 69 2c 20 65 74 e Ki, Mi, Gi, et
4620: 63 2e 20 20 4f 74 68 65 72 20 62 61 73 65 73 20 c. Other bases
4630: 28 65 2e 67 2e 20 74 68 65 20 73 74 61 6e 64 61 (e.g. the standa
4640: 72 64 20 31 30 30 30 29 20 68 61 76 65 20 74 68 rd 1000) have th
4650: 65 0a 73 75 66 66 69 78 65 73 20 6b 2c 20 4d 2c e.suffixes k, M,
4660: 20 47 2c 20 65 74 63 2e 0a 3c 70 3e 0a 0a 54 68 G, etc..<p>..Th
4670: 65 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 e <code class=sc
4680: 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 heme><span class
4690: 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 73 75 =variable><su
46a0: 66 66 69 78 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c ffix></span><
46b0: 2f 63 6f 64 65 3e 20 61 72 67 75 6d 65 6e 74 20 /code> argument
46c0: 69 73 20 61 70 70 65 6e 64 65 64 20 6f 6e 6c 79 is appended only
46d0: 20 69 66 20 61 6e 20 61 62 62 72 65 76 69 61 74 if an abbreviat
46e0: 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a 3c 70 3e ion is used..<p>
46f0: 0a 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 ..<code class=sc
4700: 68 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c 61 73 heme>(<span clas
4710: 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 3c 2f s=variable>fmt</
4720: 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 span> <span clas
4730: 73 3d 62 6f 6f 6c 65 61 6e 3e 23 66 3c 2f 73 70 s=boolean>#f</sp
4740: 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 an> (<span class
4750: 3d 76 61 72 69 61 62 6c 65 3e 6e 75 6d 2f 73 69 =variable>num/si
4760: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
4770: 61 73 73 3d 6e 75 6d 62 65 72 3e 36 30 38 3c 2f ass=number>608</
4780: 73 70 61 6e 3e 29 29 3c 2f 63 6f 64 65 3e 0a 3c span>))</code>.<
4790: 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d p>..<code class=
47a0: 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 scheme><span cla
47b0: 73 73 3d 6b 65 79 77 6f 72 64 3e 3d 26 67 74 3b ss=keyword>=>
47c0: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
47d0: 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 ass=string>"
47e0: 3b 36 30 38 26 71 75 6f 74 3b 3c 2f 73 70 61 6e ;608"</span
47f0: 3e 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 3c 63 ></code>.<p>..<c
4800: 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
4810: 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 >(<span class=va
4820: 72 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 70 61 6e riable>fmt</span
4830: 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 62 6f > <span class=bo
4840: 6f 6c 65 61 6e 3e 23 66 3c 2f 73 70 61 6e 3e 20 olean>#f</span>
4850: 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 (<span class=var
4860: 69 61 62 6c 65 3e 6e 75 6d 2f 73 69 3c 2f 73 70 iable>num/si</sp
4870: 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
4880: 6e 75 6d 62 65 72 3e 33 39 38 36 3c 2f 73 70 61 number>3986</spa
4890: 6e 3e 29 29 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a n>))</code>.<p>.
48a0: 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 .<code class=sch
48b0: 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d eme><span class=
48c0: 6b 65 79 77 6f 72 64 3e 3d 26 67 74 3b 3c 2f 73 keyword>=></s
48d0: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
48e0: 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 3b 33 2e =string>"3.
48f0: 39 4b 69 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 9Ki"</span>
4900: 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 3c 63 6f </code>.<p>..<co
4910: 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
4920: 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 (<span class=var
4930: 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 70 61 6e 3e iable>fmt</span>
4940: 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 62 6f 6f <span class=boo
4950: 6c 65 61 6e 3e 23 66 3c 2f 73 70 61 6e 3e 20 28 lean>#f</span> (
4960: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
4970: 61 62 6c 65 3e 6e 75 6d 2f 73 69 3c 2f 73 70 61 able>num/si</spa
4980: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e n> <span class=n
4990: 75 6d 62 65 72 3e 33 39 38 36 3c 2f 73 70 61 6e umber>3986</span
49a0: 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 > <span class=nu
49b0: 6d 62 65 72 3e 31 30 30 30 3c 2f 73 70 61 6e 3e mber>1000</span>
49c0: 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 <span class=str
49d0: 69 6e 67 3e 26 71 75 6f 74 3b 42 26 71 75 6f 74 ing>"B"
49e0: 3b 3c 2f 73 70 61 6e 3e 29 29 3c 2f 63 6f 64 65 ;</span>))</code
49f0: 3e 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 >.<p>..<code cla
4a00: 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 ss=scheme><span
4a10: 63 6c 61 73 73 3d 6b 65 79 77 6f 72 64 3e 3d 26 class=keyword>=&
4a20: 67 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e gt;</span> <span
4a30: 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 class=string>&q
4a40: 75 6f 74 3b 34 6b 42 26 71 75 6f 74 3b 3c 2f 73 uot;4kB"</s
4a50: 70 61 6e 3e 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a pan></code>.<p>.
4a60: 0a 53 65 65 20 3c 61 20 68 72 65 66 3d 22 68 74 .See <a href="ht
4a70: 74 70 3a 2f 2f 77 77 77 2e 62 69 70 6d 2e 6f 72 tp://www.bipm.or
4a80: 67 2f 65 6e 2f 73 69 2f 73 69 5f 62 72 6f 63 68 g/en/si/si_broch
4a90: 75 72 65 2f 63 68 61 70 74 65 72 33 2f 70 72 65 ure/chapter3/pre
4aa0: 66 69 78 65 73 2e 68 74 6d 6c 22 3e 68 74 74 70 fixes.html">http
4ab0: 3a 2f 2f 77 77 77 2e 62 69 70 6d 2e 6f 72 67 2f ://www.bipm.org/
4ac0: 65 6e 2f 73 69 2f 73 69 5f 62 72 6f 63 68 75 72 en/si/si_brochur
4ad0: 65 2f 63 68 61 70 74 65 72 33 2f 70 72 65 66 69 e/chapter3/prefi
4ae0: 78 65 73 2e 68 74 6d 6c 3c 2f 61 3e 2e 0a 3c 70 xes.html</a>..<p
4af0: 3e 0a 0a 3c 68 33 3e 28 6e 75 6d 2f 66 69 74 20 >..<h3>(num/fit
4b00: 26 6c 74 3b 77 69 64 74 68 26 67 74 3b 20 26 6c <width> &l
4b10: 74 3b 6e 26 67 74 3b 20 2e 20 26 6c 74 3b 41 52 t;n> . <AR
4b20: 47 53 26 67 74 3b 29 3c 2f 68 33 3e 0a 0a 4c 69 GS>)</h3>..Li
4b30: 6b 65 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 ke <code class=s
4b40: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
4b50: 73 3d 76 61 72 69 61 62 6c 65 3e 6e 75 6d 3c 2f s=variable>num</
4b60: 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 62 75 span></code>, bu
4b70: 74 20 69 66 20 74 68 65 20 72 65 73 75 6c 74 20 t if the result
4b80: 64 6f 65 73 6e 27 74 20 66 69 74 20 69 6e 20 3c doesn't fit in <
4b90: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
4ba0: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
4bb0: 72 69 61 62 6c 65 3e 26 6c 74 3b 77 69 64 74 68 riable><width
4bc0: 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 ></span></cod
4bd0: 65 3e 2c 20 6f 75 74 70 75 74 0a 69 6e 73 74 65 e>, output.inste
4be0: 61 64 20 61 20 73 74 72 69 6e 67 20 6f 66 20 68 ad a string of h
4bf0: 61 73 68 65 73 20 28 77 69 74 68 20 74 68 65 20 ashes (with the
4c00: 63 75 72 72 65 6e 74 20 3c 63 6f 64 65 20 63 6c current <code cl
4c10: 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e ass=scheme><span
4c20: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
4c30: 26 6c 74 3b 70 72 65 63 69 73 69 6f 6e 26 67 74 <precision>
4c40: 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 29 ;</span></code>)
4c50: 20 72 61 74 68 65 72 0a 74 68 61 6e 20 73 68 6f rather.than sho
4c60: 77 69 6e 67 20 61 6e 20 69 6e 63 6f 72 72 65 63 wing an incorrec
4c70: 74 6c 79 20 74 72 75 6e 63 61 74 65 64 20 6e 75 tly truncated nu
4c80: 6d 62 65 72 2e 20 20 46 6f 72 20 65 78 61 6d 70 mber. For examp
4c90: 6c 65 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c le.<p>..<code cl
4ca0: 61 73 73 3d 73 63 68 65 6d 65 3e 28 3c 73 70 61 ass=scheme>(<spa
4cb0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
4cc0: 3e 66 6d 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 >fmt</span> <spa
4cd0: 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c 65 61 6e 3e n class=boolean>
4ce0: 23 66 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e #f</span> (<span
4cf0: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
4d00: 66 69 78 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e fix</span> <span
4d10: 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 32 3c class=number>2<
4d20: 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c /span> (<span cl
4d30: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 6e 75 6d ass=variable>num
4d40: 2f 66 69 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 /fit</span> <spa
4d50: 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 34 n class=number>4
4d60: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
4d70: 61 73 73 3d 6e 75 6d 62 65 72 3e 31 32 2e 33 34 ass=number>12.34
4d80: 35 3c 2f 73 70 61 6e 3e 29 29 29 3c 2f 63 6f 64 5</span>)))</cod
4d90: 65 3e 0a 20 20 3c 63 6f 64 65 20 63 6c 61 73 73 e>. <code class
4da0: 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c =scheme><span cl
4db0: 61 73 73 3d 6b 65 79 77 6f 72 64 3e 3d 26 67 74 ass=keyword>=>
4dc0: 3b 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 ;</span> <span c
4dd0: 6c 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 6f lass=string>&quo
4de0: 74 3b 23 2e 23 23 26 71 75 6f 74 3b 3c 2f 73 70 t;#.##"</sp
4df0: 61 6e 3e 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a an></code>.<p>..
4e00: 3c 68 33 3e 28 6e 75 6d 2f 72 6f 6d 61 6e 20 26 <h3>(num/roman &
4e10: 6c 74 3b 6e 26 67 74 3b 29 3c 2f 68 33 3e 0a 0a lt;n>)</h3>..
4e20: 46 6f 72 6d 61 74 73 20 74 68 65 20 6e 75 6d 62 Formats the numb
4e30: 65 72 20 61 73 20 61 20 52 6f 6d 61 6e 20 6e 75 er as a Roman nu
4e40: 6d 65 72 61 6c 3a 0a 3c 70 3e 0a 0a 3c 63 6f 64 meral:.<p>..<cod
4e50: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 28 e class=scheme>(
4e60: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
4e70: 61 62 6c 65 3e 66 6d 74 3c 2f 73 70 61 6e 3e 20 able>fmt</span>
4e80: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c <span class=bool
4e90: 65 61 6e 3e 23 66 3c 2f 73 70 61 6e 3e 20 28 3c ean>#f</span> (<
4ea0: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
4eb0: 62 6c 65 3e 6e 75 6d 2f 72 6f 6d 61 6e 3c 2f 73 ble>num/roman</s
4ec0: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
4ed0: 3d 6e 75 6d 62 65 72 3e 31 39 38 39 3c 2f 73 70 =number>1989</sp
4ee0: 61 6e 3e 29 29 3c 2f 63 6f 64 65 3e 0a 20 20 3c an>))</code>. <
4ef0: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
4f00: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6b 65 e><span class=ke
4f10: 79 77 6f 72 64 3e 3d 26 67 74 3b 3c 2f 73 70 61 yword>=></spa
4f20: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 n> <span class=s
4f30: 74 72 69 6e 67 3e 26 71 75 6f 74 3b 4d 43 4d 4c tring>"MCML
4f40: 58 58 58 49 58 26 71 75 6f 74 3b 3c 2f 73 70 61 XXXIX"</spa
4f50: 6e 3e 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 3c n></code>.<p>..<
4f60: 68 33 3e 28 6e 75 6d 2f 6f 6c 64 2d 72 6f 6d 61 h3>(num/old-roma
4f70: 6e 20 26 6c 74 3b 6e 26 67 74 3b 29 3c 2f 68 33 n <n>)</h3
4f80: 3e 0a 0a 46 6f 72 6d 61 74 73 20 74 68 65 20 6e >..Formats the n
4f90: 75 6d 62 65 72 20 61 73 20 61 6e 20 6f 6c 64 2d umber as an old-
4fa0: 73 74 79 6c 65 20 52 6f 6d 61 6e 20 6e 75 6d 65 style Roman nume
4fb0: 72 61 6c 2c 20 77 69 74 68 6f 75 74 20 74 68 65 ral, without the
4fc0: 0a 73 75 62 74 72 61 63 74 69 6f 6e 20 61 62 62 .subtraction abb
4fd0: 72 65 76 69 61 74 69 6f 6e 20 72 75 6c 65 3a 0a reviation rule:.
4fe0: 3c 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 73 73 <p>..<code class
4ff0: 3d 73 63 68 65 6d 65 3e 28 3c 73 70 61 6e 20 63 =scheme>(<span c
5000: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d lass=variable>fm
5010: 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 t</span> <span c
5020: 6c 61 73 73 3d 62 6f 6f 6c 65 61 6e 3e 23 66 3c lass=boolean>#f<
5030: 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c /span> (<span cl
5040: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 6e 75 6d ass=variable>num
5050: 2f 6f 6c 64 2d 72 6f 6d 61 6e 3c 2f 73 70 61 6e /old-roman</span
5060: 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 > <span class=nu
5070: 6d 62 65 72 3e 31 39 38 39 3c 2f 73 70 61 6e 3e mber>1989</span>
5080: 29 29 3c 2f 63 6f 64 65 3e 0a 20 20 3c 63 6f 64 ))</code>. <cod
5090: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c e class=scheme><
50a0: 73 70 61 6e 20 63 6c 61 73 73 3d 6b 65 79 77 6f span class=keywo
50b0: 72 64 3e 3d 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 rd>=></span>
50c0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 <span class=stri
50d0: 6e 67 3e 26 71 75 6f 74 3b 4d 44 43 43 43 43 4c ng>"MDCCCCL
50e0: 58 58 58 56 49 49 49 49 26 71 75 6f 74 3b 3c 2f XXXVIIII"</
50f0: 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 0a 3c 70 3e span></code>.<p>
5100: 0a 0a 3c 61 20 6e 61 6d 65 3d 22 53 45 43 54 49 ..<a name="SECTI
5110: 4f 4e 5f 35 2e 33 22 3e 3c 68 32 3e 35 2e 33 26 ON_5.3"><h2>5.3&
5120: 6e 62 73 70 3b 26 6e 62 73 70 3b 46 6f 72 6d 61 nbsp; Forma
5130: 74 74 69 6e 67 20 53 70 61 63 65 3c 2f 68 32 3e tting Space</h2>
5140: 0a 0a 3c 68 33 3e 6e 6c 3c 2f 68 33 3e 0a 0a 4f ..<h3>nl</h3>..O
5150: 75 74 70 75 74 73 20 61 20 6e 65 77 6c 69 6e 65 utputs a newline
5160: 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 66 6c 3c 2f 68 ..<p>..<h3>fl</h
5170: 33 3e 0a 0a 53 68 6f 72 74 20 66 6f 72 20 26 71 3>..Short for &q
5180: 75 6f 74 3b 66 72 65 73 68 20 6c 69 6e 65 2c 26 uot;fresh line,&
5190: 71 75 6f 74 3b 20 6f 75 74 70 75 74 73 20 61 20 quot; outputs a
51a0: 6e 65 77 6c 69 6e 65 20 6f 6e 6c 79 20 69 66 20 newline only if
51b0: 77 65 27 72 65 20 6e 6f 74 20 61 6c 72 65 61 64 we're not alread
51c0: 79 0a 61 74 20 74 68 65 20 73 74 61 72 74 20 6f y.at the start o
51d0: 66 20 61 20 6c 69 6e 65 2e 0a 3c 70 3e 0a 0a 3c f a line..<p>..<
51e0: 68 33 3e 28 73 70 61 63 65 2d 74 6f 20 26 6c 74 h3>(space-to <
51f0: 3b 63 6f 6c 75 6d 6e 26 67 74 3b 29 3c 2f 68 33 ;column>)</h3
5200: 3e 0a 0a 4f 75 74 70 75 74 73 20 73 70 61 63 65 >..Outputs space
5210: 73 20 75 70 20 74 6f 20 74 68 65 20 67 69 76 65 s up to the give
5220: 6e 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 n <code class=sc
5230: 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 heme><span class
5240: 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 63 6f =variable><co
5250: 6c 75 6d 6e 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c lumn></span><
5260: 2f 63 6f 64 65 3e 2e 20 20 49 66 20 74 68 65 20 /code>. If the
5270: 63 75 72 72 65 6e 74 20 63 6f 6c 75 6d 6e 20 69 current column i
5280: 73 0a 61 6c 72 65 61 64 79 20 26 67 74 3b 3d 20 s.already >=
5290: 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
52a0: 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 me><span class=v
52b0: 61 72 69 61 62 6c 65 3e 26 6c 74 3b 63 6f 6c 75 ariable><colu
52c0: 6d 6e 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 mn></span></c
52d0: 6f 64 65 3e 2c 20 64 6f 65 73 20 6e 6f 74 68 69 ode>, does nothi
52e0: 6e 67 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 74 61 ng..<p>..<h3>(ta
52f0: 62 2d 74 6f 20 5b 26 6c 74 3b 74 61 62 2d 77 69 b-to [<tab-wi
5300: 64 74 68 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a dth>])</h3>..
5310: 4f 75 74 70 75 74 73 20 73 70 61 63 65 73 20 75 Outputs spaces u
5320: 70 20 74 6f 20 74 68 65 20 6e 65 78 74 20 74 61 p to the next ta
5330: 62 20 73 74 6f 70 2c 20 75 73 69 6e 67 20 74 61 b stop, using ta
5340: 62 20 73 74 6f 70 73 20 6f 66 20 77 69 64 74 68 b stops of width
5350: 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 .<code class=sch
5360: 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d eme><span class=
5370: 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 74 61 62 variable><tab
5380: 2d 77 69 64 74 68 26 67 74 3b 3c 2f 73 70 61 6e -width></span
5390: 3e 3c 2f 63 6f 64 65 3e 2c 20 77 68 69 63 68 20 ></code>, which
53a0: 64 65 66 61 75 6c 74 73 20 74 6f 20 38 2e 20 20 defaults to 8.
53b0: 49 66 20 61 6c 72 65 61 64 79 20 6f 6e 20 61 20 If already on a
53c0: 74 61 62 20 73 74 6f 70 2c 20 64 6f 65 73 0a 6e tab stop, does.n
53d0: 6f 74 68 69 6e 67 2e 20 20 49 66 20 79 6f 75 20 othing. If you
53e0: 77 61 6e 74 20 74 6f 20 65 6e 73 75 72 65 20 79 want to ensure y
53f0: 6f 75 20 61 6c 77 61 79 73 20 74 61 62 20 61 74 ou always tab at
5400: 20 6c 65 61 73 74 20 6f 6e 65 20 73 70 61 63 65 least one space
5410: 2c 20 79 6f 75 0a 63 61 6e 20 75 73 65 20 3c 63 , you.can use <c
5420: 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
5430: 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 >(<span class=va
5440: 72 69 61 62 6c 65 3e 63 61 74 3c 2f 73 70 61 6e riable>cat</span
5450: 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 > <span class=st
5460: 72 69 6e 67 3e 26 71 75 6f 74 3b 20 26 71 75 6f ring>" &quo
5470: 74 3b 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e t;</span> (<span
5480: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
5490: 74 61 62 2d 74 6f 3c 2f 73 70 61 6e 3e 20 3c 73 tab-to</span> <s
54a0: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
54b0: 6c 65 3e 77 69 64 74 68 3c 2f 73 70 61 6e 3e 29 le>width</span>)
54c0: 29 3c 2f 63 6f 64 65 3e 2e 0a 3c 70 3e 0a 0a 3c )</code>..<p>..<
54d0: 68 33 3e 66 6d 74 2d 6e 75 6c 6c 3c 2f 68 33 3e h3>fmt-null</h3>
54e0: 0a 0a 4f 75 74 70 75 74 73 20 6e 6f 74 68 69 6e ..Outputs nothin
54f0: 67 20 28 75 73 65 66 75 6c 20 69 6e 20 63 6f 6d g (useful in com
5500: 62 69 6e 61 74 6f 72 73 20 61 6e 64 20 61 73 20 binators and as
5510: 61 20 64 65 66 61 75 6c 74 20 6e 6f 6f 70 20 69 a default noop i
5520: 6e 0a 63 6f 6e 64 69 74 69 6f 6e 61 6c 73 29 2e n.conditionals).
5530: 0a 3c 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 53 .<p>..<a name="S
5540: 45 43 54 49 4f 4e 5f 35 2e 34 22 3e 3c 68 32 3e ECTION_5.4"><h2>
5550: 35 2e 34 26 6e 62 73 70 3b 26 6e 62 73 70 3b 43 5.4 C
5560: 6f 6e 63 61 74 65 6e 61 74 69 6f 6e 3c 2f 68 32 oncatenation</h2
5570: 3e 0a 0a 3c 68 33 3e 28 63 61 74 20 26 6c 74 3b >..<h3>(cat <
5580: 66 6f 72 6d 61 74 26 67 74 3b 20 2e 2e 2e 29 3c format> ...)<
5590: 2f 68 33 3e 0a 0a 43 6f 6e 63 61 74 65 6e 61 74 /h3>..Concatenat
55a0: 65 73 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 es the output of
55b0: 20 65 61 63 68 20 3c 63 6f 64 65 20 63 6c 61 73 each <code clas
55c0: 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 s=scheme><span c
55d0: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c lass=variable>&l
55e0: 74 3b 66 6f 72 6d 61 74 26 67 74 3b 3c 2f 73 70 t;format></sp
55f0: 61 6e 3e 3c 2f 63 6f 64 65 3e 2e 0a 3c 70 3e 0a an></code>..<p>.
5600: 0a 3c 68 33 3e 28 61 70 70 6c 79 2d 63 61 74 20 .<h3>(apply-cat
5610: 26 6c 74 3b 6c 69 73 74 26 67 74 3b 29 3c 2f 68 <list>)</h
5620: 33 3e 0a 0a 45 71 75 69 76 61 6c 65 6e 74 20 74 3>..Equivalent t
5630: 6f 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 o <code class=sc
5640: 68 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c 61 73 heme>(<span clas
5650: 73 3d 76 61 72 69 61 62 6c 65 3e 61 70 70 6c 79 s=variable>apply
5660: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
5670: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 61 74 ass=variable>cat
5680: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
5690: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 ass=variable><
56a0: 3b 6c 69 73 74 26 67 74 3b 3c 2f 73 70 61 6e 3e ;list></span>
56b0: 29 3c 2f 63 6f 64 65 3e 20 62 75 74 20 6d 61 79 )</code> but may
56c0: 20 62 65 20 6d 6f 72 65 20 65 66 66 69 63 69 65 be more efficie
56d0: 6e 74 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 66 6d nt..<p>..<h3>(fm
56e0: 74 2d 6a 6f 69 6e 20 26 6c 74 3b 66 6f 72 6d 61 t-join <forma
56f0: 74 74 65 72 26 67 74 3b 20 26 6c 74 3b 6c 69 73 tter> <lis
5700: 74 26 67 74 3b 20 5b 26 6c 74 3b 73 65 70 26 67 t> [<sep&g
5710: 74 3b 5d 29 3c 2f 68 33 3e 0a 0a 46 6f 72 6d 61 t;])</h3>..Forma
5720: 74 73 20 65 61 63 68 20 65 6c 65 6d 65 6e 74 20 ts each element
5730: 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
5740: 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 me><span class=v
5750: 61 72 69 61 62 6c 65 3e 26 6c 74 3b 65 6c 74 26 ariable><elt&
5760: 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 gt;</span></code
5770: 3e 20 6f 66 20 3c 63 6f 64 65 20 63 6c 61 73 73 > of <code class
5780: 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c =scheme><span cl
5790: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 ass=variable><
57a0: 3b 6c 69 73 74 26 67 74 3b 3c 2f 73 70 61 6e 3e ;list></span>
57b0: 3c 2f 63 6f 64 65 3e 20 77 69 74 68 20 3c 63 6f </code> with <co
57c0: 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
57d0: 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 (<span class=var
57e0: 69 61 62 6c 65 3e 26 6c 74 3b 66 6f 72 6d 61 74 iable><format
57f0: 74 65 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 0a 3c ter></span>.<
5800: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
5810: 62 6c 65 3e 26 6c 74 3b 65 6c 74 26 67 74 3b 3c ble><elt><
5820: 2f 73 70 61 6e 3e 29 3c 2f 63 6f 64 65 3e 2c 20 /span>)</code>,
5830: 69 6e 73 65 72 74 69 6e 67 20 3c 63 6f 64 65 20 inserting <code
5840: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
5850: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
5860: 65 3e 26 6c 74 3b 73 65 70 26 67 74 3b 3c 2f 73 e><sep></s
5870: 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 69 6e 20 62 pan></code> in b
5880: 65 74 77 65 65 6e 2e 20 20 3c 63 6f 64 65 20 63 etween. <code c
5890: 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 lass=scheme><spa
58a0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
58b0: 3e 26 6c 74 3b 73 65 70 26 67 74 3b 3c 2f 73 70 ><sep></sp
58c0: 61 6e 3e 3c 2f 63 6f 64 65 3e 20 64 65 66 61 75 an></code> defau
58d0: 6c 74 73 20 74 6f 20 74 68 65 0a 65 6d 70 74 79 lts to the.empty
58e0: 20 73 74 72 69 6e 67 2c 20 62 75 74 20 63 61 6e string, but can
58f0: 20 62 65 20 61 6e 79 20 66 6f 72 6d 61 74 2e 0a be any format..
5900: 3c 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 73 73 <p>..<code class
5910: 3d 73 63 68 65 6d 65 3e 28 3c 73 70 61 6e 20 63 =scheme>(<span c
5920: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d lass=variable>fm
5930: 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 t</span> <span c
5940: 6c 61 73 73 3d 62 6f 6f 6c 65 61 6e 3e 23 66 3c lass=boolean>#f<
5950: 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c /span> (<span cl
5960: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 ass=variable>fmt
5970: 2d 6a 6f 69 6e 3c 2f 73 70 61 6e 3e 20 3c 73 70 -join</span> <sp
5980: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
5990: 65 3e 64 73 70 3c 2f 73 70 61 6e 3e 20 27 28 3c e>dsp</span> '(<
59a0: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
59b0: 62 6c 65 3e 61 3c 2f 73 70 61 6e 3e 20 3c 73 70 ble>a</span> <sp
59c0: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
59d0: 65 3e 62 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e e>b</span> <span
59e0: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
59f0: 63 3c 2f 73 70 61 6e 3e 29 20 3c 73 70 61 6e 20 c</span>) <span
5a00: 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 class=string>&qu
5a10: 6f 74 3b 2c 20 26 71 75 6f 74 3b 3c 2f 73 70 61 ot;, "</spa
5a20: 6e 3e 29 29 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a n>))</code>.<p>.
5a30: 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 .<code class=sch
5a40: 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d eme><span class=
5a50: 6b 65 79 77 6f 72 64 3e 3d 26 67 74 3b 3c 2f 73 keyword>=></s
5a60: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
5a70: 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 3b 61 2c =string>"a,
5a80: 20 62 2c 20 63 26 71 75 6f 74 3b 3c 2f 73 70 61 b, c"</spa
5a90: 6e 3e 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 3c n></code>.<p>..<
5aa0: 68 33 3e 28 66 6d 74 2d 6a 6f 69 6e 2f 70 72 65 h3>(fmt-join/pre
5ab0: 66 69 78 20 26 6c 74 3b 66 6f 72 6d 61 74 74 65 fix <formatte
5ac0: 72 26 67 74 3b 20 26 6c 74 3b 6c 69 73 74 26 67 r> <list&g
5ad0: 74 3b 20 5b 26 6c 74 3b 73 65 70 26 67 74 3b 5d t; [<sep>]
5ae0: 29 3c 2f 68 33 3e 0a 0a 3c 68 33 3e 28 66 6d 74 )</h3>..<h3>(fmt
5af0: 2d 6a 6f 69 6e 2f 73 75 66 66 69 78 20 26 6c 74 -join/suffix <
5b00: 3b 66 6f 72 6d 61 74 74 65 72 26 67 74 3b 20 26 ;formatter> &
5b10: 6c 74 3b 6c 69 73 74 26 67 74 3b 20 5b 26 6c 74 lt;list> [<
5b20: 3b 73 65 70 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a ;sep>])</h3>.
5b30: 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 .<code class=sch
5b40: 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 eme>(<span class
5b50: 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 =variable>fmt</s
5b60: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
5b70: 3d 62 6f 6f 6c 65 61 6e 3e 23 66 3c 2f 73 70 61 =boolean>#f</spa
5b80: 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d n> (<span class=
5b90: 76 61 72 69 61 62 6c 65 3e 66 6d 74 2d 6a 6f 69 variable>fmt-joi
5ba0: 6e 2f 70 72 65 66 69 78 3c 2f 73 70 61 6e 3e 20 n/prefix</span>
5bb0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
5bc0: 61 62 6c 65 3e 64 73 70 3c 2f 73 70 61 6e 3e 20 able>dsp</span>
5bd0: 27 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 '(<span class=va
5be0: 72 69 61 62 6c 65 3e 75 73 72 3c 2f 73 70 61 6e riable>usr</span
5bf0: 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 > <span class=va
5c00: 72 69 61 62 6c 65 3e 6c 6f 63 61 6c 3c 2f 73 70 riable>local</sp
5c10: 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
5c20: 76 61 72 69 61 62 6c 65 3e 62 69 6e 3c 2f 73 70 variable>bin</sp
5c30: 61 6e 3e 29 20 3c 73 70 61 6e 20 63 6c 61 73 73 an>) <span class
5c40: 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 3b 2f 26 =string>"/&
5c50: 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 29 29 3c 2f quot;</span>))</
5c60: 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 code>.<p>..<code
5c70: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
5c80: 70 61 6e 20 63 6c 61 73 73 3d 6b 65 79 77 6f 72 pan class=keywor
5c90: 64 3e 3d 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 3c d>=></span> <
5ca0: 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e span class=strin
5cb0: 67 3e 26 71 75 6f 74 3b 2f 75 73 72 2f 6c 6f 63 g>"/usr/loc
5cc0: 61 6c 2f 62 69 6e 26 71 75 6f 74 3b 3c 2f 73 70 al/bin"</sp
5cd0: 61 6e 3e 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a an></code>.<p>..
5ce0: 41 73 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 As <code class=s
5cf0: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
5d00: 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 2d 6a s=variable>fmt-j
5d10: 6f 69 6e 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 oin</span></code
5d20: 3e 2c 20 62 75 74 20 69 6e 73 65 72 74 73 20 3c >, but inserts <
5d30: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
5d40: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
5d50: 72 69 61 62 6c 65 3e 26 6c 74 3b 73 65 70 26 67 riable><sep&g
5d60: 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e t;</span></code>
5d70: 20 62 65 66 6f 72 65 2f 61 66 74 65 72 20 65 76 before/after ev
5d80: 65 72 79 20 65 6c 65 6d 65 6e 74 2e 0a 3c 70 3e ery element..<p>
5d90: 0a 0a 3c 68 33 3e 28 66 6d 74 2d 6a 6f 69 6e 2f ..<h3>(fmt-join/
5da0: 6c 61 73 74 20 26 6c 74 3b 66 6f 72 6d 61 74 74 last <formatt
5db0: 65 72 26 67 74 3b 20 26 6c 74 3b 6c 61 73 74 2d er> <last-
5dc0: 66 6f 72 6d 61 74 74 65 72 26 67 74 3b 20 26 6c formatter> &l
5dd0: 74 3b 6c 69 73 74 26 67 74 3b 20 5b 26 6c 74 3b t;list> [<
5de0: 73 65 70 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a sep>])</h3>..
5df0: 41 73 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 As <code class=s
5e00: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
5e10: 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 2d 6a s=variable>fmt-j
5e20: 6f 69 6e 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 oin</span></code
5e30: 3e 2c 20 62 75 74 20 74 68 65 20 6c 61 73 74 20 >, but the last
5e40: 65 6c 65 6d 65 6e 74 20 6f 66 20 74 68 65 20 6c element of the l
5e50: 69 73 74 20 69 73 20 66 6f 72 6d 61 74 74 65 64 ist is formatted
5e60: 20 77 69 74 68 0a 3c 63 6f 64 65 20 63 6c 61 73 with.<code clas
5e70: 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 s=scheme><span c
5e80: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c lass=variable>&l
5e90: 74 3b 6c 61 73 74 2d 66 6f 72 6d 61 74 74 65 72 t;last-formatter
5ea0: 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 ></span></cod
5eb0: 65 3e 20 69 6e 73 74 65 61 64 2e 0a 3c 70 3e 0a e> instead..<p>.
5ec0: 0a 3c 68 33 3e 28 66 6d 74 2d 6a 6f 69 6e 2f 64 .<h3>(fmt-join/d
5ed0: 6f 74 20 26 6c 74 3b 66 6f 72 6d 61 74 74 65 72 ot <formatter
5ee0: 26 67 74 3b 20 26 6c 74 3b 64 6f 74 2d 66 6f 72 > <dot-for
5ef0: 6d 61 74 74 65 72 26 67 74 3b 20 26 6c 74 3b 6c matter> <l
5f00: 69 73 74 26 67 74 3b 20 5b 26 6c 74 3b 73 65 70 ist> [<sep
5f10: 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a 41 73 20 >])</h3>..As
5f20: 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
5f30: 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 me><span class=v
5f40: 61 72 69 61 62 6c 65 3e 66 6d 74 2d 6a 6f 69 6e ariable>fmt-join
5f50: 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 </span></code>,
5f60: 62 75 74 20 69 66 20 74 68 65 20 6c 69 73 74 20 but if the list
5f70: 69 73 20 61 20 64 6f 74 74 65 64 20 6c 69 73 74 is a dotted list
5f80: 2c 20 74 68 65 6e 20 66 6f 72 6d 61 74 73 20 74 , then formats t
5f90: 68 65 20 64 6f 74 74 65 64 0a 76 61 6c 75 65 20 he dotted.value
5fa0: 77 69 74 68 20 3c 63 6f 64 65 20 63 6c 61 73 73 with <code class
5fb0: 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c =scheme><span cl
5fc0: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 ass=variable><
5fd0: 3b 64 6f 74 2d 66 6f 72 6d 61 74 74 65 72 26 67 ;dot-formatter&g
5fe0: 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e t;</span></code>
5ff0: 20 69 6e 73 74 65 61 64 2e 0a 3c 70 3e 0a 0a 3c instead..<p>..<
6000: 61 20 6e 61 6d 65 3d 22 53 45 43 54 49 4f 4e 5f a name="SECTION_
6010: 35 2e 35 22 3e 3c 68 32 3e 35 2e 35 26 6e 62 73 5.5"><h2>5.5&nbs
6020: 70 3b 26 6e 62 73 70 3b 50 61 64 64 69 6e 67 20 p; Padding
6030: 61 6e 64 20 54 72 69 6d 6d 69 6e 67 3c 2f 68 32 and Trimming</h2
6040: 3e 0a 0a 3c 68 33 3e 28 70 61 64 20 26 6c 74 3b >..<h3>(pad <
6050: 77 69 64 74 68 26 67 74 3b 20 26 6c 74 3b 66 6f width> <fo
6060: 72 6d 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 rmat> ...)</h
6070: 33 3e 0a 0a 3c 68 33 3e 28 70 61 64 2f 6c 65 66 3>..<h3>(pad/lef
6080: 74 20 26 6c 74 3b 77 69 64 74 68 26 67 74 3b 20 t <width>
6090: 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b 20 2e <format> .
60a0: 2e 2e 29 3c 2f 68 33 3e 0a 0a 3c 68 33 3e 28 70 ..)</h3>..<h3>(p
60b0: 61 64 2f 62 6f 74 68 20 26 6c 74 3b 77 69 64 74 ad/both <widt
60c0: 68 26 67 74 3b 20 26 6c 74 3b 66 6f 72 6d 61 74 h> <format
60d0: 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a > ...)</h3>..
60e0: 41 6e 61 6c 6f 67 73 20 6f 66 20 53 52 46 49 2d Analogs of SRFI-
60f0: 31 33 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 13 <code class=s
6100: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
6110: 73 3d 76 61 72 69 61 62 6c 65 3e 73 74 72 69 6e s=variable>strin
6120: 67 2d 70 61 64 3c 2f 73 70 61 6e 3e 3c 2f 63 6f g-pad</span></co
6130: 64 65 3e 2c 20 74 68 65 73 65 20 61 64 64 20 65 de>, these add e
6140: 78 74 72 61 20 73 70 61 63 65 20 74 6f 20 74 68 xtra space to th
6150: 65 20 6c 65 66 74 2c 0a 72 69 67 68 74 20 6f 72 e left,.right or
6160: 20 62 6f 74 68 20 73 69 64 65 73 20 6f 66 20 74 both sides of t
6170: 68 65 20 6f 75 74 70 75 74 20 67 65 6e 65 72 61 he output genera
6180: 74 65 64 20 62 79 20 74 68 65 20 3c 63 6f 64 65 ted by the <code
6190: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
61a0: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
61b0: 6c 65 3e 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 le><format>
61c0: 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 73 ;</span></code>s
61d0: 20 74 6f 0a 70 61 64 20 69 74 20 74 6f 20 3c 63 to.pad it to <c
61e0: 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
61f0: 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 ><span class=var
6200: 69 61 62 6c 65 3e 26 6c 74 3b 77 69 64 74 68 26 iable><width&
6210: 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 gt;</span></code
6220: 3e 2e 20 20 49 66 20 3c 63 6f 64 65 20 63 6c 61 >. If <code cla
6230: 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 ss=scheme><span
6240: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 class=variable>&
6250: 6c 74 3b 77 69 64 74 68 26 67 74 3b 3c 2f 73 70 lt;width></sp
6260: 61 6e 3e 3c 2f 63 6f 64 65 3e 20 69 73 20 65 78 an></code> is ex
6270: 63 65 65 64 65 64 20 68 61 73 20 6e 6f 20 65 66 ceeded has no ef
6280: 66 65 63 74 2e 0a 3c 63 6f 64 65 20 63 6c 61 73 fect..<code clas
6290: 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 s=scheme><span c
62a0: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 70 61 lass=variable>pa
62b0: 64 2f 62 6f 74 68 3c 2f 73 70 61 6e 3e 3c 2f 63 d/both</span></c
62c0: 6f 64 65 3e 20 77 69 6c 6c 20 69 6e 63 6c 75 64 ode> will includ
62d0: 65 20 61 6e 20 65 78 74 72 61 20 73 70 61 63 65 e an extra space
62e0: 20 6f 6e 20 74 68 65 20 72 69 67 68 74 20 73 69 on the right si
62f0: 64 65 20 6f 66 20 74 68 65 0a 6f 75 74 70 75 74 de of the.output
6300: 20 69 66 20 74 68 65 20 64 69 66 66 65 72 65 6e if the differen
6310: 63 65 20 69 73 20 6f 64 64 2e 0a 3c 70 3e 0a 0a ce is odd..<p>..
6320: 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
6330: 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 me><span class=v
6340: 61 72 69 61 62 6c 65 3e 70 61 64 3c 2f 73 70 61 ariable>pad</spa
6350: 6e 3e 3c 2f 63 6f 64 65 3e 20 64 6f 65 73 20 6e n></code> does n
6360: 6f 74 20 61 63 63 75 6d 75 6c 61 74 65 20 61 6e ot accumulate an
6370: 79 20 69 6e 74 65 72 6d 65 64 69 61 74 65 20 64 y intermediate d
6380: 61 74 61 2e 0a 3c 70 3e 0a 0a 4e 6f 74 65 20 74 ata..<p>..Note t
6390: 68 65 73 65 20 61 72 65 20 63 6f 6c 75 6d 6e 2d hese are column-
63a0: 6f 72 69 65 6e 74 65 64 20 70 61 64 64 65 72 73 oriented padders
63b0: 2c 20 73 6f 20 77 6f 6e 27 74 20 6e 65 63 65 73 , so won't neces
63c0: 73 61 72 69 6c 79 20 77 6f 72 6b 0a 77 69 74 68 sarily work.with
63d0: 20 6d 75 6c 74 69 2d 6c 69 6e 65 20 6f 75 74 70 multi-line outp
63e0: 75 74 20 28 70 61 64 64 69 6e 67 20 64 6f 65 73 ut (padding does
63f0: 6e 27 74 20 73 65 65 6d 20 61 20 6c 69 6b 65 6c n't seem a likel
6400: 79 20 6f 70 65 72 61 74 69 6f 6e 20 66 6f 72 0a y operation for.
6410: 6d 75 6c 74 69 2d 6c 69 6e 65 20 6f 75 74 70 75 multi-line outpu
6420: 74 29 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 74 72 t)..<p>..<h3>(tr
6430: 69 6d 20 26 6c 74 3b 77 69 64 74 68 26 67 74 3b im <width>
6440: 20 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b 20 <format>
6450: 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a 3c 68 33 3e 28 ...)</h3>..<h3>(
6460: 74 72 69 6d 2f 6c 65 66 74 20 26 6c 74 3b 77 69 trim/left <wi
6470: 64 74 68 26 67 74 3b 20 26 6c 74 3b 66 6f 72 6d dth> <form
6480: 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e at> ...)</h3>
6490: 0a 0a 3c 68 33 3e 28 74 72 69 6d 2f 62 6f 74 68 ..<h3>(trim/both
64a0: 20 26 6c 74 3b 77 69 64 74 68 26 67 74 3b 20 26 <width> &
64b0: 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b 20 2e 2e lt;format> ..
64c0: 2e 29 3c 2f 68 33 3e 0a 0a 41 6e 61 6c 6f 67 73 .)</h3>..Analogs
64d0: 20 6f 66 20 53 52 46 49 2d 31 33 20 3c 63 6f 64 of SRFI-13 <cod
64e0: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c e class=scheme><
64f0: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
6500: 62 6c 65 3e 73 74 72 69 6e 67 2d 74 72 69 6d 3c ble>string-trim<
6510: 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 74 /span></code>, t
6520: 72 75 6e 63 61 74 65 73 20 74 68 65 20 6f 75 74 runcates the out
6530: 70 75 74 20 6f 66 20 74 68 65 0a 3c 63 6f 64 65 put of the.<code
6540: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
6550: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
6560: 6c 65 3e 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 le><format>
6570: 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 73 ;</span></code>s
6580: 20 74 6f 20 66 6f 72 63 65 20 69 74 20 69 6e 20 to force it in
6590: 75 6e 64 65 72 20 3c 63 6f 64 65 20 63 6c 61 73 under <code clas
65a0: 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 s=scheme><span c
65b0: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c lass=variable>&l
65c0: 74 3b 77 69 64 74 68 26 67 74 3b 3c 2f 73 70 61 t;width></spa
65d0: 6e 3e 3c 2f 63 6f 64 65 3e 20 63 6f 6c 75 6d 6e n></code> column
65e0: 73 2e 20 20 41 73 20 73 6f 6f 6e 20 61 73 0a 61 s. As soon as.a
65f0: 6e 79 20 6f 66 20 74 68 65 20 3c 63 6f 64 65 20 ny of the <code
6600: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
6610: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
6620: 65 3e 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b e><format>
6630: 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 73 20 </span></code>s
6640: 65 78 63 65 65 64 20 3c 63 6f 64 65 20 63 6c 61 exceed <code cla
6650: 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 ss=scheme><span
6660: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 class=variable>&
6670: 6c 74 3b 77 69 64 74 68 26 67 74 3b 3c 2f 73 70 lt;width></sp
6680: 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 73 74 6f 70 an></code>, stop
6690: 20 66 6f 72 6d 61 74 74 69 6e 67 20 61 6e 64 0a formatting and.
66a0: 74 72 75 6e 63 61 74 65 20 74 68 65 20 72 65 73 truncate the res
66b0: 75 6c 74 2c 20 72 65 74 75 72 6e 69 6e 67 20 63 ult, returning c
66c0: 6f 6e 74 72 6f 6c 20 74 6f 20 77 68 6f 65 76 65 ontrol to whoeve
66d0: 72 20 63 61 6c 6c 65 64 20 3c 63 6f 64 65 20 63 r called <code c
66e0: 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 lass=scheme><spa
66f0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
6700: 3e 74 72 69 6d 3c 2f 73 70 61 6e 3e 3c 2f 63 6f >trim</span></co
6710: 64 65 3e 2e 20 20 49 66 0a 3c 63 6f 64 65 20 63 de>. If.<code c
6720: 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 lass=scheme><spa
6730: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
6740: 3e 26 6c 74 3b 77 69 64 74 68 26 67 74 3b 3c 2f ><width></
6750: 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 69 73 20 span></code> is
6760: 6e 6f 74 20 65 78 63 65 65 64 65 64 20 68 61 73 not exceeded has
6770: 20 6e 6f 20 65 66 66 65 63 74 2e 0a 3c 70 3e 0a no effect..<p>.
6780: 0a 49 66 20 61 20 74 72 75 6e 63 61 74 69 6f 6e .If a truncation
6790: 20 65 6c 6c 69 70 73 65 20 69 73 20 73 65 74 20 ellipse is set
67a0: 28 65 2e 67 2e 20 77 69 74 68 20 74 68 65 20 3c (e.g. with the <
67b0: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
67c0: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
67d0: 72 69 61 62 6c 65 3e 65 6c 6c 69 70 73 65 73 3c riable>ellipses<
67e0: 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 70 72 /span></code> pr
67f0: 6f 63 65 64 75 72 65 0a 62 65 6c 6f 77 29 2c 20 ocedure.below),
6800: 74 68 65 6e 20 77 68 65 6e 20 61 6e 79 20 74 72 then when any tr
6810: 75 6e 63 61 74 69 6f 6e 20 6f 63 63 75 72 73 20 uncation occurs
6820: 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
6830: 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 me><span class=v
6840: 61 72 69 61 62 6c 65 3e 74 72 69 6d 3c 2f 73 70 ariable>trim</sp
6850: 61 6e 3e 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 3c an></code> and <
6860: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
6870: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
6880: 72 69 61 62 6c 65 3e 74 72 69 6d 2f 6c 65 66 74 riable>trim/left
6890: 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 0a 77 </span></code>.w
68a0: 69 6c 6c 20 61 70 70 65 6e 64 20 61 6e 64 20 70 ill append and p
68b0: 72 65 70 65 6e 64 20 74 68 65 20 65 6c 6c 69 70 repend the ellip
68c0: 73 65 2c 20 72 65 73 70 65 63 74 69 76 65 6c 79 se, respectively
68d0: 2e 20 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 . <code class=s
68e0: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
68f0: 73 3d 76 61 72 69 61 62 6c 65 3e 74 72 69 6d 2f s=variable>trim/
6900: 62 6f 74 68 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 both</span></cod
6910: 65 3e 20 77 69 6c 6c 0a 62 6f 74 68 20 70 72 65 e> will.both pre
6920: 70 65 6e 64 20 61 6e 64 20 61 70 70 65 6e 64 2e pend and append.
6930: 20 20 54 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 The length of
6940: 74 68 65 20 65 6c 6c 69 70 73 65 20 77 69 6c 6c the ellipse will
6950: 20 62 65 20 63 6f 6e 73 69 64 65 72 65 64 0a 77 be considered.w
6960: 68 65 6e 20 74 72 75 6e 63 61 74 69 6e 67 20 74 hen truncating t
6970: 68 65 20 6f 72 69 67 69 6e 61 6c 20 73 74 72 69 he original stri
6980: 6e 67 2c 20 73 6f 20 74 68 61 74 20 74 68 65 20 ng, so that the
6990: 74 6f 74 61 6c 20 77 69 64 74 68 20 77 69 6c 6c total width will
69a0: 0a 6e 65 76 65 72 20 62 65 20 6c 6f 6e 67 65 72 .never be longer
69b0: 20 74 68 61 6e 20 3c 63 6f 64 65 20 63 6c 61 73 than <code clas
69c0: 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 s=scheme><span c
69d0: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c lass=variable>&l
69e0: 74 3b 77 69 64 74 68 26 67 74 3b 3c 2f 73 70 61 t;width></spa
69f0: 6e 3e 3c 2f 63 6f 64 65 3e 2e 0a 3c 70 3e 0a 0a n></code>..<p>..
6a00: 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
6a10: 6d 65 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d me>(<span class=
6a20: 76 61 72 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 70 variable>fmt</sp
6a30: 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
6a40: 62 6f 6f 6c 65 61 6e 3e 23 66 3c 2f 73 70 61 6e boolean>#f</span
6a50: 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 > (<span class=v
6a60: 61 72 69 61 62 6c 65 3e 65 6c 6c 69 70 73 65 73 ariable>ellipses
6a70: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
6a80: 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 ass=string>"
6a90: 3b 2e 2e 2e 26 71 75 6f 74 3b 3c 2f 73 70 61 6e ;..."</span
6aa0: 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 > (<span class=v
6ab0: 61 72 69 61 62 6c 65 3e 74 72 69 6d 3c 2f 73 70 ariable>trim</sp
6ac0: 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
6ad0: 6e 75 6d 62 65 72 3e 35 3c 2f 73 70 61 6e 3e 20 number>5</span>
6ae0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 <span class=stri
6af0: 6e 67 3e 26 71 75 6f 74 3b 61 62 63 64 65 26 71 ng>"abcde&q
6b00: 75 6f 74 3b 3c 2f 73 70 61 6e 3e 29 29 29 3c 2f uot;</span>)))</
6b10: 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 code>.<p>..<code
6b20: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
6b30: 70 61 6e 20 63 6c 61 73 73 3d 6b 65 79 77 6f 72 pan class=keywor
6b40: 64 3e 3d 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 20 d>=></span>
6b50: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 <span class=stri
6b60: 6e 67 3e 26 71 75 6f 74 3b 61 62 63 64 65 26 71 ng>"abcde&q
6b70: 75 6f 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 uot;</span></cod
6b80: 65 3e 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c e>.<p>..<code cl
6b90: 61 73 73 3d 73 63 68 65 6d 65 3e 28 3c 73 70 61 ass=scheme>(<spa
6ba0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
6bb0: 3e 66 6d 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 >fmt</span> <spa
6bc0: 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c 65 61 6e 3e n class=boolean>
6bd0: 23 66 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e #f</span> (<span
6be0: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
6bf0: 65 6c 6c 69 70 73 65 73 3c 2f 73 70 61 6e 3e 20 ellipses</span>
6c00: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 <span class=stri
6c10: 6e 67 3e 26 71 75 6f 74 3b 2e 2e 2e 26 71 75 6f ng>"...&quo
6c20: 74 3b 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e t;</span> (<span
6c30: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
6c40: 74 72 69 6d 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 trim</span> <spa
6c50: 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 35 n class=number>5
6c60: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
6c70: 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 ass=string>"
6c80: 3b 61 62 63 64 65 66 26 71 75 6f 74 3b 3c 2f 73 ;abcdef"</s
6c90: 70 61 6e 3e 29 29 29 3c 2f 63 6f 64 65 3e 0a 3c pan>)))</code>.<
6ca0: 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d p>..<code class=
6cb0: 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 scheme><span cla
6cc0: 73 73 3d 6b 65 79 77 6f 72 64 3e 3d 26 67 74 3b ss=keyword>=>
6cd0: 3c 2f 73 70 61 6e 3e 20 20 3c 73 70 61 6e 20 63 </span> <span c
6ce0: 6c 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 6f lass=string>&quo
6cf0: 74 3b 61 62 2e 2e 2e 26 71 75 6f 74 3b 3c 2f 73 t;ab..."</s
6d00: 70 61 6e 3e 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a pan></code>.<p>.
6d10: 0a 3c 68 33 3e 28 74 72 69 6d 2f 6c 65 6e 67 74 .<h3>(trim/lengt
6d20: 68 20 26 6c 74 3b 77 69 64 74 68 26 67 74 3b 20 h <width>
6d30: 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b 20 2e <format> .
6d40: 2e 2e 29 3c 2f 68 33 3e 0a 0a 41 20 76 61 72 69 ..)</h3>..A vari
6d50: 61 6e 74 20 6f 66 20 3c 63 6f 64 65 20 63 6c 61 ant of <code cla
6d60: 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 ss=scheme><span
6d70: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 74 class=variable>t
6d80: 72 69 6d 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 rim</span></code
6d90: 3e 20 77 68 69 63 68 20 61 63 74 73 20 6f 6e 20 > which acts on
6da0: 74 68 65 20 61 63 74 75 61 6c 20 63 68 61 72 61 the actual chara
6db0: 63 74 65 72 20 63 6f 75 6e 74 20 72 61 74 68 65 cter count rathe
6dc0: 72 0a 74 68 61 6e 20 63 6f 6c 75 6d 6e 73 2c 20 r.than columns,
6dd0: 75 73 65 66 75 6c 20 66 6f 72 20 74 72 75 6e 63 useful for trunc
6de0: 61 74 69 6e 67 20 70 6f 74 65 6e 74 69 61 6c 6c ating potentiall
6df0: 79 20 63 79 63 6c 69 63 20 64 61 74 61 2e 0a 3c y cyclic data..<
6e00: 70 3e 0a 0a 3c 68 33 3e 28 66 69 74 20 26 6c 74 p>..<h3>(fit <
6e10: 3b 77 69 64 74 68 26 67 74 3b 20 26 6c 74 3b 66 ;width> <f
6e20: 6f 72 6d 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f ormat> ...)</
6e30: 68 33 3e 0a 0a 3c 68 33 3e 28 66 69 74 2f 6c 65 h3>..<h3>(fit/le
6e40: 66 74 20 26 6c 74 3b 77 69 64 74 68 26 67 74 3b ft <width>
6e50: 20 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b 20 <format>
6e60: 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a 3c 68 33 3e 28 ...)</h3>..<h3>(
6e70: 66 69 74 2f 62 6f 74 68 20 26 6c 74 3b 77 69 64 fit/both <wid
6e80: 74 68 26 67 74 3b 20 26 6c 74 3b 66 6f 72 6d 61 th> <forma
6e90: 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e 0a t> ...)</h3>.
6ea0: 0a 41 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f .A combination o
6eb0: 66 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 f <code class=sc
6ec0: 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 heme><span class
6ed0: 3d 76 61 72 69 61 62 6c 65 3e 70 61 64 3c 2f 73 =variable>pad</s
6ee0: 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 pan></code> and
6ef0: 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
6f00: 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 me><span class=v
6f10: 61 72 69 61 62 6c 65 3e 74 72 75 6e 63 3c 2f 73 ariable>trunc</s
6f20: 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 65 6e 73 pan></code>, ens
6f30: 75 72 65 73 20 74 68 65 20 6f 75 74 70 75 74 20 ures the output
6f40: 77 69 64 74 68 20 69 73 0a 65 78 61 63 74 6c 79 width is.exactly
6f50: 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 <code class=sch
6f60: 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d eme><span class=
6f70: 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 77 69 64 variable><wid
6f80: 74 68 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 th></span></c
6f90: 6f 64 65 3e 2c 20 74 72 75 6e 63 61 74 69 6e 67 ode>, truncating
6fa0: 20 69 66 20 69 74 20 67 6f 65 73 20 6f 76 65 72 if it goes over
6fb0: 20 61 6e 64 20 70 61 64 64 69 6e 67 20 69 66 20 and padding if
6fc0: 69 74 20 67 6f 65 73 0a 75 6e 64 65 72 2e 0a 3c it goes.under..<
6fd0: 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 53 45 43 p>..<a name="SEC
6fe0: 54 49 4f 4e 5f 35 2e 36 22 3e 3c 68 32 3e 35 2e TION_5.6"><h2>5.
6ff0: 36 26 6e 62 73 70 3b 26 6e 62 73 70 3b 46 6f 72 6 For
7000: 6d 61 74 20 56 61 72 69 61 62 6c 65 73 3c 2f 68 mat Variables</h
7010: 32 3e 0a 0a 59 6f 75 20 6d 61 79 20 68 61 76 65 2>..You may have
7020: 20 6e 6f 74 69 63 65 64 20 6d 61 6e 79 20 6f 66 noticed many of
7030: 20 74 68 65 20 66 6f 72 6d 61 74 74 65 72 73 20 the formatters
7040: 61 72 65 20 61 77 61 72 65 20 6f 66 20 74 68 65 are aware of the
7050: 20 63 75 72 72 65 6e 74 0a 63 6f 6c 75 6d 6e 2e current.column.
7060: 20 20 54 68 69 73 20 69 73 20 62 65 63 61 75 73 This is becaus
7070: 65 20 65 61 63 68 20 63 6f 6d 62 69 6e 61 74 6f e each combinato
7080: 72 20 69 73 20 61 63 74 75 61 6c 6c 79 20 61 20 r is actually a
7090: 70 72 6f 63 65 64 75 72 65 20 6f 66 0a 6f 6e 65 procedure of.one
70a0: 20 61 72 67 75 6d 65 6e 74 2c 20 74 68 65 20 63 argument, the c
70b0: 75 72 72 65 6e 74 20 66 6f 72 6d 61 74 20 73 74 urrent format st
70c0: 61 74 65 2c 20 77 68 69 63 68 20 68 6f 6c 64 73 ate, which holds
70d0: 20 62 61 73 69 63 0a 69 6e 66 6f 72 6d 61 74 69 basic.informati
70e0: 6f 6e 20 73 75 63 68 20 61 73 20 74 68 65 20 72 on such as the r
70f0: 6f 77 2c 20 63 6f 6c 75 6d 6e 2c 20 61 6e 64 20 ow, column, and
7100: 61 6e 79 20 6f 74 68 65 72 20 69 6e 66 6f 72 6d any other inform
7110: 61 74 69 6f 6e 20 74 68 61 74 0a 61 20 66 6f 72 ation that.a for
7120: 6d 61 74 20 63 6f 6d 62 69 6e 61 74 6f 72 20 6d mat combinator m
7130: 61 79 20 77 61 6e 74 20 74 6f 20 6b 65 65 70 20 ay want to keep
7140: 74 72 61 63 6b 20 6f 66 2e 20 20 54 68 65 20 62 track of. The b
7150: 61 73 69 63 20 69 6e 74 65 72 66 61 63 65 0a 69 asic interface.i
7160: 73 3a 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 66 6d 74 s:.<p>..<h3>(fmt
7170: 2d 6c 65 74 20 26 6c 74 3b 6e 61 6d 65 26 67 74 -let <name>
7180: 3b 20 26 6c 74 3b 76 61 6c 75 65 26 67 74 3b 20 ; <value>
7190: 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b 20 2e <format> .
71a0: 2e 2e 29 3c 2f 68 33 3e 0a 0a 3c 68 33 3e 28 66 ..)</h3>..<h3>(f
71b0: 6d 74 2d 62 69 6e 64 20 26 6c 74 3b 6e 61 6d 65 mt-bind <name
71c0: 26 67 74 3b 20 26 6c 74 3b 76 61 6c 75 65 26 67 > <value&g
71d0: 74 3b 20 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 t; <format>
71e0: 3b 20 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a 3c 63 6f ; ...)</h3>..<co
71f0: 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
7200: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
7210: 61 62 6c 65 3e 66 6d 74 2d 6c 65 74 3c 2f 73 70 able>fmt-let</sp
7220: 61 6e 3e 3c 2f 63 6f 64 65 3e 20 73 65 74 73 20 an></code> sets
7230: 74 68 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 the name for the
7240: 20 64 75 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 duration of the
7250: 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 <code class=sch
7260: 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d eme><span class=
7270: 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 66 6f 72 variable><for
7280: 6d 61 74 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f mat></span></
7290: 63 6f 64 65 3e 73 2c 20 61 6e 64 0a 72 65 73 74 code>s, and.rest
72a0: 6f 72 65 73 20 69 74 20 6f 6e 20 72 65 74 75 72 ores it on retur
72b0: 6e 2e 20 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d n. <code class=
72c0: 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 scheme><span cla
72d0: 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 2d ss=variable>fmt-
72e0: 62 69 6e 64 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 bind</span></cod
72f0: 65 3e 20 73 65 74 73 20 69 74 20 77 69 74 68 6f e> sets it witho
7300: 75 74 20 72 65 73 74 6f 72 69 6e 67 20 69 74 2e ut restoring it.
7310: 0a 3c 70 3e 0a 0a 41 20 63 6f 6e 76 65 6e 69 65 .<p>..A convenie
7320: 6e 63 65 20 63 6f 6e 74 72 6f 6c 20 73 74 72 75 nce control stru
7330: 63 74 75 72 65 20 63 61 6e 20 62 65 20 75 73 65 cture can be use
7340: 66 75 6c 20 69 6e 20 63 6f 6d 62 69 6e 61 74 69 ful in combinati
7350: 6f 6e 20 77 69 74 68 0a 74 68 65 73 65 20 73 74 on with.these st
7360: 61 74 65 73 3a 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 ates:.<p>..<h3>(
7370: 66 6d 74 2d 69 66 20 26 6c 74 3b 70 72 65 64 26 fmt-if <pred&
7380: 67 74 3b 20 26 6c 74 3b 70 61 73 73 26 67 74 3b gt; <pass>
7390: 20 5b 26 6c 74 3b 66 61 69 6c 26 67 74 3b 5d 29 [<fail>])
73a0: 3c 2f 68 33 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 </h3>..<code cla
73b0: 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 ss=scheme><span
73c0: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 class=variable>&
73d0: 6c 74 3b 70 72 65 64 26 67 74 3b 3c 2f 73 70 61 lt;pred></spa
73e0: 6e 3e 3c 2f 63 6f 64 65 3e 20 74 61 6b 65 73 20 n></code> takes
73f0: 6f 6e 65 20 61 72 67 75 6d 65 6e 74 20 28 74 68 one argument (th
7400: 65 20 66 6f 72 6d 61 74 20 73 74 61 74 65 29 20 e format state)
7410: 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20 62 6f and returns a bo
7420: 6f 6c 65 61 6e 0a 72 65 73 75 6c 74 2e 20 20 49 olean.result. I
7430: 66 20 74 72 75 65 2c 20 74 68 65 20 3c 63 6f 64 f true, the <cod
7440: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c e class=scheme><
7450: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
7460: 62 6c 65 3e 26 6c 74 3b 70 61 73 73 26 67 74 3b ble><pass>
7470: 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 66 </span></code> f
7480: 6f 72 6d 61 74 20 69 73 20 61 70 70 6c 69 65 64 ormat is applied
7490: 20 74 6f 20 74 68 65 20 73 74 61 74 65 2c 0a 6f to the state,.o
74a0: 74 68 65 72 77 69 73 65 20 3c 63 6f 64 65 20 63 therwise <code c
74b0: 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 lass=scheme><spa
74c0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
74d0: 3e 26 6c 74 3b 66 61 69 6c 26 67 74 3b 3c 2f 73 ><fail></s
74e0: 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 28 64 65 66 pan></code> (def
74f0: 61 75 6c 74 69 6e 67 20 74 6f 20 74 68 65 20 69 aulting to the i
7500: 64 65 6e 74 69 74 79 29 20 69 73 20 61 70 70 6c dentity) is appl
7510: 69 65 64 2e 0a 3c 70 3e 0a 0a 4d 61 6e 79 20 6f ied..<p>..Many o
7520: 66 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 f the previously
7530: 20 6d 65 6e 74 69 6f 6e 65 64 20 63 6f 6d 62 69 mentioned combi
7540: 6e 61 74 6f 72 73 20 68 61 76 65 20 62 65 68 61 nators have beha
7550: 76 69 6f 72 20 77 68 69 63 68 20 63 61 6e 0a 62 vior which can.b
7560: 65 20 61 6c 74 65 72 65 64 20 77 69 74 68 20 73 e altered with s
7570: 74 61 74 65 20 76 61 72 69 61 62 6c 65 73 2e 20 tate variables.
7580: 20 41 6c 74 68 6f 75 67 68 20 3c 63 6f 64 65 20 Although <code
7590: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
75a0: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
75b0: 65 3e 66 6d 74 2d 6c 65 74 3c 2f 73 70 61 6e 3e e>fmt-let</span>
75c0: 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 3c 63 6f 64 </code> and <cod
75d0: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c e class=scheme><
75e0: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
75f0: 62 6c 65 3e 66 6d 74 2d 62 69 6e 64 3c 2f 73 70 ble>fmt-bind</sp
7600: 61 6e 3e 3c 2f 63 6f 64 65 3e 0a 63 6f 75 6c 64 an></code>.could
7610: 20 62 65 20 75 73 65 64 2c 20 74 68 65 73 65 20 be used, these
7620: 63 6f 6d 6d 6f 6e 20 76 61 72 69 61 62 6c 65 73 common variables
7630: 20 68 61 76 65 20 73 68 6f 72 74 63 75 74 73 3a have shortcuts:
7640: 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 72 61 64 69 78 .<p>..<h3>(radix
7650: 20 26 6c 74 3b 6b 26 67 74 3b 20 26 6c 74 3b 66 <k> <f
7660: 6f 72 6d 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f ormat> ...)</
7670: 68 33 3e 0a 0a 3c 68 33 3e 28 66 69 78 20 26 6c h3>..<h3>(fix &l
7680: 74 3b 6b 26 67 74 3b 20 26 6c 74 3b 66 6f 72 6d t;k> <form
7690: 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e at> ...)</h3>
76a0: 0a 0a 54 68 65 73 65 20 61 6c 74 65 72 20 74 68 ..These alter th
76b0: 65 20 72 61 64 69 78 20 61 6e 64 20 66 69 78 65 e radix and fixe
76c0: 64 20 70 6f 69 6e 74 20 70 72 65 63 69 73 69 6f d point precisio
76d0: 6e 20 6f 66 20 6e 75 6d 62 65 72 73 20 6f 75 74 n of numbers out
76e0: 70 75 74 20 77 69 74 68 0a 3c 63 6f 64 65 20 63 put with.<code c
76f0: 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 lass=scheme><spa
7700: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
7710: 3e 64 73 70 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 >dsp</span></cod
7720: 65 3e 2c 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d e>, <code class=
7730: 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 scheme><span cla
7740: 73 73 3d 76 61 72 69 61 62 6c 65 3e 77 72 74 3c ss=variable>wrt<
7750: 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 3c /span></code>, <
7760: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
7770: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
7780: 72 69 61 62 6c 65 3e 70 72 65 74 74 79 3c 2f 73 riable>pretty</s
7790: 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 6f 72 20 3c pan></code> or <
77a0: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
77b0: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
77c0: 72 69 61 62 6c 65 3e 6e 75 6d 3c 2f 73 70 61 6e riable>num</span
77d0: 3e 3c 2f 63 6f 64 65 3e 2e 20 20 54 68 65 73 65 ></code>. These
77e0: 20 73 65 74 74 69 6e 67 73 20 61 70 70 6c 79 0a settings apply.
77f0: 72 65 63 75 72 73 69 76 65 6c 79 20 74 6f 20 61 recursively to a
7800: 6c 6c 20 6f 75 74 70 75 74 20 64 61 74 61 20 73 ll output data s
7810: 74 72 75 63 74 75 72 65 73 2c 20 73 6f 20 74 68 tructures, so th
7820: 61 74 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c at.<p>..<code cl
7830: 61 73 73 3d 73 63 68 65 6d 65 3e 28 3c 73 70 61 ass=scheme>(<spa
7840: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
7850: 3e 66 6d 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 >fmt</span> <spa
7860: 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c 65 61 6e 3e n class=boolean>
7870: 23 66 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e #f</span> (<span
7880: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
7890: 72 61 64 69 78 3c 2f 73 70 61 6e 3e 20 3c 73 70 radix</span> <sp
78a0: 61 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e an class=number>
78b0: 31 36 3c 2f 73 70 61 6e 3e 20 27 28 3c 73 70 61 16</span> '(<spa
78c0: 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 37 n class=number>7
78d0: 30 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 0</span> <span c
78e0: 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 38 30 3c 2f lass=number>80</
78f0: 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 span> <span clas
7900: 73 3d 6e 75 6d 62 65 72 3e 39 30 3c 2f 73 70 61 s=number>90</spa
7910: 6e 3e 29 29 29 3c 2f 63 6f 64 65 3e 0a 3c 70 3e n>)))</code>.<p>
7920: 0a 0a 77 69 6c 6c 20 72 65 74 75 72 6e 20 74 68 ..will return th
7930: 65 20 73 74 72 69 6e 67 20 3c 63 6f 64 65 20 63 e string <code c
7940: 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 lass=scheme><spa
7950: 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e 26 n class=string>&
7960: 71 75 6f 74 3b 28 23 78 34 36 20 23 78 35 30 20 quot;(#x46 #x50
7970: 23 78 35 61 29 26 71 75 6f 74 3b 3c 2f 73 70 61 #x5a)"</spa
7980: 6e 3e 3c 2f 63 6f 64 65 3e 2e 20 20 4e 6f 74 65 n></code>. Note
7990: 20 74 68 61 74 20 72 65 61 64 2f 77 72 69 74 65 that read/write
79a0: 0a 69 6e 76 61 72 69 61 6e 63 65 20 69 73 20 65 .invariance is e
79b0: 73 73 65 6e 74 69 61 6c 2c 20 73 6f 20 66 6f 72 ssential, so for
79c0: 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 <code class=sch
79d0: 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d eme><span class=
79e0: 76 61 72 69 61 62 6c 65 3e 64 73 70 3c 2f 73 70 variable>dsp</sp
79f0: 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 an></code>, <cod
7a00: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c e class=scheme><
7a10: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
7a20: 62 6c 65 3e 77 72 74 3c 2f 73 70 61 6e 3e 3c 2f ble>wrt</span></
7a30: 63 6f 64 65 3e 20 61 6e 64 20 3c 63 6f 64 65 20 code> and <code
7a40: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
7a50: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
7a60: 65 3e 70 72 65 74 74 79 3c 2f 73 70 61 6e 3e 3c e>pretty</span><
7a70: 2f 63 6f 64 65 3e 20 74 68 65 0a 72 61 64 69 78 /code> the.radix
7a80: 20 70 72 65 66 69 78 20 69 73 20 61 6c 77 61 79 prefix is alway
7a90: 73 20 69 6e 63 6c 75 64 65 64 20 77 68 65 6e 20 s included when
7aa0: 6e 6f 74 20 64 65 63 69 6d 61 6c 2e 20 20 55 73 not decimal. Us
7ab0: 65 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 e <code class=sc
7ac0: 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 heme><span class
7ad0: 3d 76 61 72 69 61 62 6c 65 3e 6e 75 6d 3c 2f 73 =variable>num</s
7ae0: 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 69 66 20 79 pan></code> if y
7af0: 6f 75 0a 77 61 6e 74 20 74 6f 20 66 6f 72 6d 61 ou.want to forma
7b00: 74 20 6e 75 6d 62 65 72 73 20 69 6e 20 61 6c 74 t numbers in alt
7b10: 65 72 6e 61 74 65 20 62 61 73 65 73 20 77 69 74 ernate bases wit
7b20: 68 6f 75 74 20 74 68 69 73 20 70 72 65 66 69 78 hout this prefix
7b30: 2e 20 20 46 6f 72 0a 65 78 61 6d 70 6c 65 2c 0a . For.example,.
7b40: 3c 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 73 73 <p>..<code class
7b50: 3d 73 63 68 65 6d 65 3e 28 3c 73 70 61 6e 20 63 =scheme>(<span c
7b60: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d lass=variable>fm
7b70: 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 t</span> <span c
7b80: 6c 61 73 73 3d 62 6f 6f 6c 65 61 6e 3e 23 66 3c lass=boolean>#f<
7b90: 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c /span> (<span cl
7ba0: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 72 61 64 ass=variable>rad
7bb0: 69 78 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 ix</span> <span
7bc0: 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 31 36 3c class=number>16<
7bd0: 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
7be0: 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 3b ss=string>"
7bf0: 28 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 20 28 ("</span> (
7c00: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
7c10: 61 62 6c 65 3e 66 6d 74 2d 6a 6f 69 6e 3c 2f 73 able>fmt-join</s
7c20: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
7c30: 3d 76 61 72 69 61 62 6c 65 3e 6e 75 6d 3c 2f 73 =variable>num</s
7c40: 70 61 6e 3e 20 27 28 3c 73 70 61 6e 20 63 6c 61 pan> '(<span cla
7c50: 73 73 3d 6e 75 6d 62 65 72 3e 37 30 3c 2f 73 70 ss=number>70</sp
7c60: 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
7c70: 6e 75 6d 62 65 72 3e 38 30 3c 2f 73 70 61 6e 3e number>80</span>
7c80: 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 6d <span class=num
7c90: 62 65 72 3e 39 30 3c 2f 73 70 61 6e 3e 29 20 3c ber>90</span>) <
7ca0: 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e span class=strin
7cb0: 67 3e 26 71 75 6f 74 3b 20 26 71 75 6f 74 3b 3c g>" "<
7cc0: 2f 73 70 61 6e 3e 29 20 3c 73 70 61 6e 20 63 6c /span>) <span cl
7cd0: 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 ass=string>"
7ce0: 3b 29 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 29 ;)"</span>)
7cf0: 29 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 77 6f )</code>.<p>..wo
7d00: 75 6c 64 20 72 65 74 75 72 6e 20 3c 63 6f 64 65 uld return <code
7d10: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
7d20: 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 pan class=string
7d30: 3e 26 71 75 6f 74 3b 28 34 36 20 35 30 20 35 61 >"(46 50 5a
7d40: 29 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 3c 2f )"</span></
7d50: 63 6f 64 65 3e 2c 20 74 68 65 20 73 61 6d 65 20 code>, the same
7d60: 6f 75 74 70 75 74 20 61 73 20 61 62 6f 76 65 20 output as above
7d70: 77 69 74 68 6f 75 74 20 74 68 65 0a 26 71 75 6f without the.&quo
7d80: 74 3b 23 78 26 71 75 6f 74 3b 20 72 61 64 69 78 t;#x" radix
7d90: 20 70 72 65 66 69 78 2e 0a 3c 70 3e 0a 0a 4e 6f prefix..<p>..No
7da0: 74 65 20 74 68 61 74 20 66 69 78 65 64 20 70 6f te that fixed po
7db0: 69 6e 74 20 66 6f 72 6d 61 74 74 69 6e 67 20 73 int formatting s
7dc0: 75 70 70 6f 72 74 73 20 61 72 62 69 74 72 61 72 upports arbitrar
7dd0: 79 20 70 72 65 63 69 73 69 6f 6e 20 69 6e 0a 69 y precision in.i
7de0: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 77 mplementations w
7df0: 69 74 68 20 65 78 61 63 74 20 6e 6f 6e 2d 69 6e ith exact non-in
7e00: 74 65 67 72 61 6c 20 72 61 74 69 6f 6e 61 6c 73 tegral rationals
7e10: 2e 20 20 57 68 65 6e 20 74 72 79 69 6e 67 20 74 . When trying t
7e20: 6f 0a 70 72 69 6e 74 20 69 6e 65 78 61 63 74 20 o.print inexact
7e30: 6e 75 6d 62 65 72 73 20 6d 6f 72 65 20 74 68 61 numbers more tha
7e40: 6e 20 74 68 65 20 6d 61 63 68 69 6e 65 20 70 72 n the machine pr
7e50: 65 63 69 73 69 6f 6e 20 79 6f 75 20 77 69 6c 6c ecision you will
7e60: 0a 74 79 70 69 63 61 6c 6c 79 20 67 65 74 20 72 .typically get r
7e70: 65 73 75 6c 74 73 20 6c 69 6b 65 0a 3c 70 3e 0a esults like.<p>.
7e80: 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 .<code class=sch
7e90: 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 eme>(<span class
7ea0: 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 =variable>fmt</s
7eb0: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
7ec0: 3d 62 6f 6f 6c 65 61 6e 3e 23 66 3c 2f 73 70 61 =boolean>#f</spa
7ed0: 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d n> (<span class=
7ee0: 76 61 72 69 61 62 6c 65 3e 66 69 78 3c 2f 73 70 variable>fix</sp
7ef0: 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
7f00: 6e 75 6d 62 65 72 3e 33 30 3c 2f 73 70 61 6e 3e number>30</span>
7f10: 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 63 6f 6e <span class=con
7f20: 73 74 61 6e 74 3e 23 69 32 2f 33 3c 2f 73 70 61 stant>#i2/3</spa
7f30: 6e 3e 29 29 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a n>))</code>.<p>.
7f40: 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 .<code class=sch
7f50: 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d eme><span class=
7f60: 6b 65 79 77 6f 72 64 3e 3d 26 67 74 3b 3c 2f 73 keyword>=></s
7f70: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
7f80: 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 3b 30 2e =string>"0.
7f90: 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 6666666666666666
7fa0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 26 71 00000000000000&q
7fb0: 75 6f 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 uot;</span></cod
7fc0: 65 3e 0a 3c 70 3e 0a 0a 62 75 74 20 77 69 74 68 e>.<p>..but with
7fd0: 20 61 6e 20 65 78 61 63 74 20 72 61 74 69 6f 6e an exact ration
7fe0: 61 6c 20 69 74 20 77 69 6c 6c 20 67 69 76 65 20 al it will give
7ff0: 79 6f 75 20 61 73 20 6d 61 6e 79 20 64 69 67 69 you as many digi
8000: 74 73 20 61 73 20 79 6f 75 0a 72 65 71 75 65 73 ts as you.reques
8010: 74 3a 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c t:.<p>..<code cl
8020: 61 73 73 3d 73 63 68 65 6d 65 3e 28 3c 73 70 61 ass=scheme>(<spa
8030: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
8040: 3e 66 6d 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 >fmt</span> <spa
8050: 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c 65 61 6e 3e n class=boolean>
8060: 23 66 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e #f</span> (<span
8070: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
8080: 66 69 78 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e fix</span> <span
8090: 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 33 30 class=number>30
80a0: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
80b0: 61 73 73 3d 6e 75 6d 62 65 72 3e 32 2f 33 3c 2f ass=number>2/3</
80c0: 73 70 61 6e 3e 29 29 3c 2f 63 6f 64 65 3e 0a 3c span>))</code>.<
80d0: 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d p>..<code class=
80e0: 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 scheme><span cla
80f0: 73 73 3d 6b 65 79 77 6f 72 64 3e 3d 26 67 74 3b ss=keyword>=>
8100: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
8110: 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 ass=string>"
8120: 3b 30 2e 36 36 36 36 36 36 36 36 36 36 36 36 36 ;0.6666666666666
8130: 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 6666666666666666
8140: 37 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 7"</span></
8150: 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 code>.<p>..<h3>(
8160: 64 65 63 69 6d 61 6c 2d 61 6c 69 67 6e 20 26 6c decimal-align &l
8170: 74 3b 6b 26 67 74 3b 20 26 6c 74 3b 66 6f 72 6d t;k> <form
8180: 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e at> ...)</h3>
8190: 0a 0a 53 70 65 63 69 66 69 65 73 20 61 6e 20 61 ..Specifies an a
81a0: 6c 69 67 6e 6d 65 6e 74 20 66 6f 72 20 74 68 65 lignment for the
81b0: 20 64 65 63 69 6d 61 6c 20 70 6c 61 63 65 20 77 decimal place w
81c0: 68 65 6e 20 66 6f 72 6d 61 74 74 69 6e 67 20 6e hen formatting n
81d0: 75 6d 62 65 72 73 2c 0a 75 73 65 66 75 6c 20 66 umbers,.useful f
81e0: 6f 72 20 6f 75 74 70 75 74 74 69 6e 67 20 74 61 or outputting ta
81f0: 62 6c 65 73 20 6f 66 20 6e 75 6d 62 65 72 73 2e bles of numbers.
8200: 0a 3c 70 3e 0a 0a 3c 70 72 65 20 63 6c 61 73 73 .<p>..<pre class
8210: 3d 73 63 68 65 6d 65 3e 0a 20 20 28 3c 73 70 61 =scheme>. (<spa
8220: 6e 20 63 6c 61 73 73 3d 6b 65 79 77 6f 72 64 3e n class=keyword>
8230: 64 65 66 69 6e 65 3c 2f 73 70 61 6e 3e 20 28 3c define</span> (<
8240: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
8250: 62 6c 65 3e 70 72 69 6e 74 2d 61 6e 67 6c 65 73 ble>print-angles
8260: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
8270: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 78 3c 2f ass=variable>x</
8280: 73 70 61 6e 3e 29 0a 20 20 20 20 20 28 3c 73 70 span>). (<sp
8290: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
82a0: 65 3e 66 6d 74 2d 6a 6f 69 6e 3c 2f 73 70 61 6e e>fmt-join</span
82b0: 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 > <span class=va
82c0: 72 69 61 62 6c 65 3e 6e 75 6d 3c 2f 73 70 61 6e riable>num</span
82d0: 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 > (<span class=v
82e0: 61 72 69 61 62 6c 65 3e 6c 69 73 74 3c 2f 73 70 ariable>list</sp
82f0: 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
8300: 76 61 72 69 61 62 6c 65 3e 78 3c 2f 73 70 61 6e variable>x</span
8310: 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 > (<span class=v
8320: 61 72 69 61 62 6c 65 3e 73 69 6e 3c 2f 73 70 61 ariable>sin</spa
8330: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 n> <span class=v
8340: 61 72 69 61 62 6c 65 3e 78 3c 2f 73 70 61 6e 3e ariable>x</span>
8350: 29 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 ) (<span class=v
8360: 61 72 69 61 62 6c 65 3e 63 6f 73 3c 2f 73 70 61 ariable>cos</spa
8370: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 n> <span class=v
8380: 61 72 69 61 62 6c 65 3e 78 3c 2f 73 70 61 6e 3e ariable>x</span>
8390: 29 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 ) (<span class=v
83a0: 61 72 69 61 62 6c 65 3e 74 61 6e 3c 2f 73 70 61 ariable>tan</spa
83b0: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 n> <span class=v
83c0: 61 72 69 61 62 6c 65 3e 78 3c 2f 73 70 61 6e 3e ariable>x</span>
83d0: 29 29 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 )) <span class=s
83e0: 74 72 69 6e 67 3e 26 71 75 6f 74 3b 20 26 71 75 tring>" &qu
83f0: 6f 74 3b 3c 2f 73 70 61 6e 3e 29 29 0a 0a 20 20 ot;</span>))..
8400: 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 (<span class=var
8410: 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 70 61 6e 3e iable>fmt</span>
8420: 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 62 6f 6f <span class=boo
8430: 6c 65 61 6e 3e 23 74 3c 2f 73 70 61 6e 3e 20 28 lean>#t</span> (
8440: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
8450: 61 62 6c 65 3e 64 65 63 69 6d 61 6c 2d 61 6c 69 able>decimal-ali
8460: 67 6e 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 gn</span> <span
8470: 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 35 3c 2f class=number>5</
8480: 73 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 span> (<span cla
8490: 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 69 78 3c ss=variable>fix<
84a0: 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
84b0: 73 73 3d 6e 75 6d 62 65 72 3e 33 3c 2f 73 70 61 ss=number>3</spa
84c0: 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d n> (<span class=
84d0: 76 61 72 69 61 62 6c 65 3e 66 6d 74 2d 6a 6f 69 variable>fmt-joi
84e0: 6e 2f 73 75 66 66 69 78 3c 2f 73 70 61 6e 3e 20 n/suffix</span>
84f0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
8500: 61 62 6c 65 3e 70 72 69 6e 74 2d 61 6e 67 6c 65 able>print-angle
8510: 73 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e 20 s</span> (<span
8520: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 69 class=variable>i
8530: 6f 74 61 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e ota</span> <span
8540: 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 35 3c class=number>5<
8550: 2f 73 70 61 6e 3e 29 20 3c 73 70 61 6e 20 63 6c /span>) <span cl
8560: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 6e 6c 3c ass=variable>nl<
8570: 2f 73 70 61 6e 3e 29 29 29 29 0a 3c 2f 70 72 65 /span>)))).</pre
8580: 3e 0a 3c 70 3e 0a 0a 77 6f 75 6c 64 20 6f 75 74 >.<p>..would out
8590: 70 75 74 0a 3c 70 3e 0a 0a 3c 70 72 65 3e 0a 20 put.<p>..<pre>.
85a0: 20 20 30 2e 30 30 30 20 20 20 20 30 2e 30 30 30 0.000 0.000
85b0: 20 20 20 20 31 2e 30 30 30 20 20 20 20 30 2e 30 1.000 0.0
85c0: 30 30 0a 20 20 20 31 2e 30 30 30 20 20 20 20 30 00. 1.000 0
85d0: 2e 38 34 32 20 20 20 20 30 2e 35 34 30 20 20 20 .842 0.540
85e0: 20 31 2e 35 35 37 0a 20 20 20 32 2e 30 30 30 20 1.557. 2.000
85f0: 20 20 20 30 2e 39 30 39 20 20 20 2d 30 2e 34 31 0.909 -0.41
8600: 36 20 20 20 2d 32 2e 31 38 35 0a 20 20 20 33 2e 6 -2.185. 3.
8610: 30 30 30 20 20 20 20 30 2e 31 34 31 20 20 20 2d 000 0.141 -
8620: 30 2e 39 39 30 20 20 20 2d 30 2e 31 34 32 0a 20 0.990 -0.142.
8630: 20 20 34 2e 30 30 30 20 20 20 2d 30 2e 37 35 37 4.000 -0.757
8640: 20 20 20 2d 30 2e 36 35 34 20 20 20 20 31 2e 31 -0.654 1.1
8650: 35 38 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 0a 3c 58.</pre>.<p>..<
8660: 68 33 3e 28 63 6f 6d 6d 61 2d 63 68 61 72 20 26 h3>(comma-char &
8670: 6c 74 3b 6b 26 67 74 3b 20 26 6c 74 3b 66 6f 72 lt;k> <for
8680: 6d 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 mat> ...)</h3
8690: 3e 0a 0a 3c 68 33 3e 28 64 65 63 69 6d 61 6c 2d >..<h3>(decimal-
86a0: 63 68 61 72 20 26 6c 74 3b 6b 26 67 74 3b 20 26 char <k> &
86b0: 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b 20 2e 2e lt;format> ..
86c0: 2e 29 3c 2f 68 33 3e 0a 0a 3c 63 6f 64 65 20 63 .)</h3>..<code c
86d0: 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 lass=scheme><spa
86e0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
86f0: 3e 63 6f 6d 6d 61 2d 63 68 61 72 3c 2f 73 70 61 >comma-char</spa
8700: 6e 3e 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 3c 63 n></code> and <c
8710: 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
8720: 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 ><span class=var
8730: 69 61 62 6c 65 3e 64 65 63 69 6d 61 6c 2d 63 68 iable>decimal-ch
8740: 61 72 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e ar</span></code>
8750: 20 73 65 74 20 74 68 65 20 64 65 66 61 75 6c 74 set the default
8760: 73 20 66 6f 72 20 6e 75 6d 62 65 72 0a 66 6f 72 s for number.for
8770: 6d 61 74 74 69 6e 67 2e 0a 3c 70 3e 0a 0a 3c 68 matting..<p>..<h
8780: 33 3e 28 70 61 64 2d 63 68 61 72 20 26 6c 74 3b 3>(pad-char <
8790: 6b 26 67 74 3b 20 26 6c 74 3b 66 6f 72 6d 61 74 k> <format
87a0: 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a > ...)</h3>..
87b0: 54 68 65 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d The <code class=
87c0: 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 scheme><span cla
87d0: 73 73 3d 76 61 72 69 61 62 6c 65 3e 70 61 64 2d ss=variable>pad-
87e0: 63 68 61 72 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 char</span></cod
87f0: 65 3e 20 73 65 74 73 20 74 68 65 20 63 68 61 72 e> sets the char
8800: 61 63 74 65 72 20 75 73 65 64 20 62 79 20 3c 63 acter used by <c
8810: 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
8820: 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 ><span class=var
8830: 69 61 62 6c 65 3e 73 70 61 63 65 2d 74 6f 3c 2f iable>space-to</
8840: 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 3c 63 span></code>, <c
8850: 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
8860: 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 ><span class=var
8870: 69 61 62 6c 65 3e 74 61 62 2d 74 6f 3c 2f 73 70 iable>tab-to</sp
8880: 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 0a 3c 63 6f 64 an></code>,.<cod
8890: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c e class=scheme><
88a0: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
88b0: 62 6c 65 3e 70 61 64 2f 2a 3c 2f 73 70 61 6e 3e ble>pad/*</span>
88c0: 3c 2f 63 6f 64 65 3e 2c 20 61 6e 64 20 3c 63 6f </code>, and <co
88d0: 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
88e0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
88f0: 61 62 6c 65 3e 66 69 74 2f 2a 3c 2f 73 70 61 6e able>fit/*</span
8900: 3e 3c 2f 63 6f 64 65 3e 2c 20 61 6e 64 20 64 65 ></code>, and de
8910: 66 61 75 6c 74 73 20 74 6f 20 3c 63 6f 64 65 20 faults to <code
8920: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
8930: 61 6e 20 63 6c 61 73 73 3d 63 68 61 72 3e 23 5c an class=char>#\
8940: 73 70 61 63 65 3c 2f 73 70 61 6e 3e 3c 2f 63 6f space</span></co
8950: 64 65 3e 2e 0a 3c 70 3e 0a 0a 3c 70 72 65 20 63 de>..<p>..<pre c
8960: 6c 61 73 73 3d 73 63 68 65 6d 65 3e 0a 20 20 28 lass=scheme>. (
8970: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6b 65 79 77 <span class=keyw
8980: 6f 72 64 3e 64 65 66 69 6e 65 3c 2f 73 70 61 6e ord>define</span
8990: 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 > (<span class=v
89a0: 61 72 69 61 62 6c 65 3e 70 72 69 6e 74 2d 74 61 ariable>print-ta
89b0: 62 6c 65 2d 6f 66 2d 63 6f 6e 74 65 6e 74 73 3c ble-of-contents<
89c0: 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
89d0: 73 73 3d 76 61 72 69 61 62 6c 65 3e 61 6c 69 73 ss=variable>alis
89e0: 74 3c 2f 73 70 61 6e 3e 29 0a 20 20 20 20 28 3c t</span>). (<
89f0: 73 70 61 6e 20 63 6c 61 73 73 3d 6b 65 79 77 6f span class=keywo
8a00: 72 64 3e 64 65 66 69 6e 65 3c 2f 73 70 61 6e 3e rd>define</span>
8a10: 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 (<span class=va
8a20: 72 69 61 62 6c 65 3e 70 72 69 6e 74 2d 6c 69 6e riable>print-lin
8a30: 65 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 e</span> <span c
8a40: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 78 3c lass=variable>x<
8a50: 2f 73 70 61 6e 3e 29 0a 20 20 20 20 20 20 28 3c /span>). (<
8a60: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
8a70: 62 6c 65 3e 63 61 74 3c 2f 73 70 61 6e 3e 20 28 ble>cat</span> (
8a80: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
8a90: 61 62 6c 65 3e 63 61 72 3c 2f 73 70 61 6e 3e 20 able>car</span>
8aa0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
8ab0: 61 62 6c 65 3e 78 3c 2f 73 70 61 6e 3e 29 20 28 able>x</span>) (
8ac0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
8ad0: 61 62 6c 65 3e 73 70 61 63 65 2d 74 6f 3c 2f 73 able>space-to</s
8ae0: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
8af0: 3d 6e 75 6d 62 65 72 3e 37 32 3c 2f 73 70 61 6e =number>72</span
8b00: 3e 29 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d >) (<span class=
8b10: 76 61 72 69 61 62 6c 65 3e 70 61 64 2f 6c 65 66 variable>pad/lef
8b20: 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 t</span> <span c
8b30: 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 33 3c 2f 73 lass=number>3</s
8b40: 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 pan> (<span clas
8b50: 73 3d 76 61 72 69 61 62 6c 65 3e 63 64 72 3c 2f s=variable>cdr</
8b60: 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 span> <span clas
8b70: 73 3d 76 61 72 69 61 62 6c 65 3e 78 3c 2f 73 70 s=variable>x</sp
8b80: 61 6e 3e 29 29 29 29 0a 20 20 20 20 28 3c 73 70 an>)))). (<sp
8b90: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
8ba0: 65 3e 66 6d 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 e>fmt</span> <sp
8bb0: 61 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c 65 61 6e an class=boolean
8bc0: 3e 23 74 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 >#t</span> (<spa
8bd0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
8be0: 3e 70 61 64 2d 63 68 61 72 3c 2f 73 70 61 6e 3e >pad-char</span>
8bf0: 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 63 68 61 <span class=cha
8c00: 72 3e 23 5c 2e 3c 2f 73 70 61 6e 3e 20 28 3c 73 r>#\.</span> (<s
8c10: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
8c20: 6c 65 3e 66 6d 74 2d 6a 6f 69 6e 2f 73 75 66 66 le>fmt-join/suff
8c30: 69 78 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 ix</span> <span
8c40: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 70 class=variable>p
8c50: 72 69 6e 74 2d 6c 69 6e 65 3c 2f 73 70 61 6e 3e rint-line</span>
8c60: 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 <span class=var
8c70: 69 61 62 6c 65 3e 61 6c 69 73 74 3c 2f 73 70 61 iable>alist</spa
8c80: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 n> <span class=v
8c90: 61 72 69 61 62 6c 65 3e 6e 6c 3c 2f 73 70 61 6e ariable>nl</span
8ca0: 3e 29 29 29 29 0a 0a 20 20 28 3c 73 70 61 6e 20 >)))).. (<span
8cb0: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 70 class=variable>p
8cc0: 72 69 6e 74 2d 74 61 62 6c 65 2d 6f 66 2d 63 6f rint-table-of-co
8cd0: 6e 74 65 6e 74 73 3c 2f 73 70 61 6e 3e 0a 20 20 ntents</span>.
8ce0: 20 27 28 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d '((<span class=
8cf0: 73 74 72 69 6e 67 3e 26 71 75 6f 74 3b 41 6e 20 string>"An
8d00: 55 6e 65 78 70 65 63 74 65 64 20 50 61 72 74 79 Unexpected Party
8d10: 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 20 2e 20 "</span> .
8d20: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 <span class=numb
8d30: 65 72 3e 32 39 3c 2f 73 70 61 6e 3e 29 0a 20 20 er>29</span>).
8d40: 20 20 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d (<span class=
8d50: 73 74 72 69 6e 67 3e 26 71 75 6f 74 3b 52 6f 61 string>"Roa
8d60: 73 74 20 4d 75 74 74 6f 6e 26 71 75 6f 74 3b 3c st Mutton"<
8d70: 2f 73 70 61 6e 3e 20 2e 20 3c 73 70 61 6e 20 63 /span> . <span c
8d80: 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 36 30 3c 2f lass=number>60</
8d90: 73 70 61 6e 3e 29 0a 20 20 20 20 20 28 3c 73 70 span>). (<sp
8da0: 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e an class=string>
8db0: 26 71 75 6f 74 3b 41 20 53 68 6f 72 74 20 52 65 "A Short Re
8dc0: 73 74 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 20 st"</span>
8dd0: 2e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 . <span class=nu
8de0: 6d 62 65 72 3e 38 37 3c 2f 73 70 61 6e 3e 29 0a mber>87</span>).
8df0: 20 20 20 20 20 28 3c 73 70 61 6e 20 63 6c 61 73 (<span clas
8e00: 73 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 3b 4f s=string>"O
8e10: 76 65 72 20 48 69 6c 6c 20 61 6e 64 20 55 6e 64 ver Hill and Und
8e20: 65 72 20 48 69 6c 6c 26 71 75 6f 74 3b 3c 2f 73 er Hill"</s
8e30: 70 61 6e 3e 20 2e 20 3c 73 70 61 6e 20 63 6c 61 pan> . <span cla
8e40: 73 73 3d 6e 75 6d 62 65 72 3e 31 30 30 3c 2f 73 ss=number>100</s
8e50: 70 61 6e 3e 29 0a 20 20 20 20 20 28 3c 73 70 61 pan>). (<spa
8e60: 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e 26 n class=string>&
8e70: 71 75 6f 74 3b 52 69 64 64 6c 65 73 20 69 6e 20 quot;Riddles in
8e80: 74 68 65 20 44 61 72 6b 26 71 75 6f 74 3b 3c 2f the Dark"</
8e90: 73 70 61 6e 3e 20 2e 20 3c 73 70 61 6e 20 63 6c span> . <span cl
8ea0: 61 73 73 3d 6e 75 6d 62 65 72 3e 31 31 35 3c 2f ass=number>115</
8eb0: 73 70 61 6e 3e 29 29 29 0a 3c 2f 70 72 65 3e 0a span>))).</pre>.
8ec0: 3c 70 3e 0a 0a 77 6f 75 6c 64 20 6f 75 74 70 75 <p>..would outpu
8ed0: 74 0a 3c 70 3e 0a 0a 3c 70 72 65 3e 0a 20 20 41 t.<p>..<pre>. A
8ee0: 6e 20 55 6e 65 78 70 65 63 74 65 64 20 50 61 72 n Unexpected Par
8ef0: 74 79 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e ty..............
8f00: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e ................
8f10: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e ................
8f20: 2e 2e 2e 2e 2e 2e 2e 32 39 0a 20 20 52 6f 61 73 .......29. Roas
8f30: 74 20 4d 75 74 74 6f 6e 2e 2e 2e 2e 2e 2e 2e 2e t Mutton........
8f40: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e ................
8f50: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e ................
8f60: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e ................
8f70: 2e 2e 2e 2e 36 30 0a 20 20 41 20 53 68 6f 72 74 ....60. A Short
8f80: 20 52 65 73 74 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e Rest...........
8f90: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e ................
8fa0: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e ................
8fb0: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e ................
8fc0: 2e 38 37 0a 20 20 4f 76 65 72 20 48 69 6c 6c 20 .87. Over Hill
8fd0: 61 6e 64 20 55 6e 64 65 72 20 48 69 6c 6c 2e 2e and Under Hill..
8fe0: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e ................
8ff0: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e ................
9000: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 31 30 30 .............100
9010: 0a 20 20 52 69 64 64 6c 65 73 20 69 6e 20 74 68 . Riddles in th
9020: 65 20 44 61 72 6b 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e e Dark..........
9030: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e ................
9040: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e ................
9050: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 31 31 35 0a 3c 2f ..........115.</
9060: 70 72 65 3e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 65 pre>.<p>..<h3>(e
9070: 6c 6c 69 70 73 65 20 26 6c 74 3b 65 6c 6c 26 67 llipse <ell&g
9080: 74 3b 20 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 t; <format>
9090: 3b 20 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a 53 65 74 ; ...)</h3>..Set
90a0: 73 20 74 68 65 20 74 72 75 6e 63 61 74 69 6f 6e s the truncation
90b0: 20 65 6c 6c 69 70 73 65 20 74 6f 20 3c 63 6f 64 ellipse to <cod
90c0: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c e class=scheme><
90d0: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
90e0: 62 6c 65 3e 26 6c 74 3b 65 6c 6c 26 67 74 3b 3c ble><ell><
90f0: 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 77 /span></code>, w
9100: 6f 75 6c 64 20 73 68 6f 75 6c 64 20 62 65 20 61 ould should be a
9110: 20 73 74 72 69 6e 67 20 6f 72 0a 63 68 61 72 61 string or.chara
9120: 63 74 65 72 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 cter..<p>..<h3>(
9130: 77 69 74 68 2d 77 69 64 74 68 20 26 6c 74 3b 77 with-width <w
9140: 69 64 74 68 26 67 74 3b 20 26 6c 74 3b 66 6f 72 idth> <for
9150: 6d 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 mat> ...)</h3
9160: 3e 0a 0a 53 65 74 73 20 74 68 65 20 6d 61 78 69 >..Sets the maxi
9170: 6d 75 6d 20 63 6f 6c 75 6d 6e 20 77 69 64 74 68 mum column width
9180: 20 75 73 65 64 20 62 79 20 73 6f 6d 65 20 66 6f used by some fo
9190: 72 6d 61 74 74 65 72 73 2e 20 20 54 68 65 20 64 rmatters. The d
91a0: 65 66 61 75 6c 74 0a 69 73 20 37 38 2e 0a 3c 70 efault.is 78..<p
91b0: 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 53 45 43 54 >..<a name="SECT
91c0: 49 4f 4e 5f 35 2e 37 22 3e 3c 68 32 3e 35 2e 37 ION_5.7"><h2>5.7
91d0: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 43 6f 6c 75 Colu
91e0: 6d 6e 61 72 20 46 6f 72 6d 61 74 74 69 6e 67 3c mnar Formatting<
91f0: 2f 68 32 3e 0a 0a 41 6c 74 68 6f 75 67 68 20 3c /h2>..Although <
9200: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
9210: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
9220: 72 69 61 62 6c 65 3e 74 61 62 2d 74 6f 3c 2f 73 riable>tab-to</s
9230: 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f pan></code>, <co
9240: 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
9250: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
9260: 61 62 6c 65 3e 73 70 61 63 65 2d 74 6f 3c 2f 73 able>space-to</s
9270: 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 pan></code> and
9280: 70 61 64 64 69 6e 67 20 63 61 6e 20 62 65 20 75 padding can be u
9290: 73 65 64 20 74 6f 20 6d 61 6e 75 61 6c 6c 79 0a sed to manually.
92a0: 61 6c 69 67 6e 20 63 6f 6c 75 6d 6e 73 20 74 6f align columns to
92b0: 20 70 72 6f 64 75 63 65 20 74 61 62 6c 65 2d 6c produce table-l
92c0: 69 6b 65 20 6f 75 74 70 75 74 2c 20 74 68 65 73 ike output, thes
92d0: 65 20 63 61 6e 20 62 65 20 61 77 6b 77 61 72 64 e can be awkward
92e0: 20 74 6f 0a 75 73 65 2e 20 20 54 68 65 20 6f 70 to.use. The op
92f0: 74 69 6f 6e 61 6c 20 65 78 74 65 6e 73 69 6f 6e tional extension
9300: 73 20 69 6e 20 74 68 69 73 20 73 65 63 74 69 6f s in this sectio
9310: 6e 20 6d 61 6b 65 20 74 68 69 73 20 65 61 73 69 n make this easi
9320: 65 72 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 63 6f er..<p>..<h3>(co
9330: 6c 75 6d 6e 61 72 20 26 6c 74 3b 63 6f 6c 75 6d lumnar <colum
9340: 6e 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e 0a n> ...)</h3>.
9350: 0a 46 6f 72 6d 61 74 73 20 65 61 63 68 20 3c 63 .Formats each <c
9360: 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
9370: 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 ><span class=var
9380: 69 61 62 6c 65 3e 26 6c 74 3b 63 6f 6c 75 6d 6e iable><column
9390: 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 ></span></cod
93a0: 65 3e 20 73 69 64 65 2d 62 79 2d 73 69 64 65 2c e> side-by-side,
93b0: 20 69 2e 65 2e 20 61 73 20 74 68 6f 75 67 68 20 i.e. as though
93c0: 65 61 63 68 20 77 65 72 65 0a 66 6f 72 6d 61 74 each were.format
93d0: 74 65 64 20 73 65 70 61 72 61 74 65 6c 79 20 61 ted separately a
93e0: 6e 64 20 74 68 65 6e 20 74 68 65 20 69 6e 64 69 nd then the indi
93f0: 76 69 64 75 61 6c 20 6c 69 6e 65 73 20 63 6f 6e vidual lines con
9400: 63 61 74 65 6e 61 74 65 64 0a 74 6f 67 65 74 68 catenated.togeth
9410: 65 72 2e 20 20 54 68 65 20 63 75 72 72 65 6e 74 er. The current
9420: 20 63 6f 6c 75 6d 6e 20 77 69 64 74 68 20 69 73 column width is
9430: 20 64 69 76 69 64 65 64 20 65 76 65 6e 6c 79 20 divided evenly
9440: 61 6d 6f 6e 67 20 74 68 65 0a 63 6f 6c 75 6d 6e among the.column
9450: 73 2c 20 61 6e 64 20 61 6c 6c 20 62 75 74 20 74 s, and all but t
9460: 68 65 20 6c 61 73 74 20 63 6f 6c 75 6d 6e 20 61 he last column a
9470: 72 65 20 72 69 67 68 74 2d 70 61 64 64 65 64 2e re right-padded.
9480: 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 0a 3c 70 For example.<p
9490: 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 >..<code class=s
94a0: 63 68 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c 61 cheme>(<span cla
94b0: 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 3c ss=variable>fmt<
94c0: 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
94d0: 73 73 3d 62 6f 6f 6c 65 61 6e 3e 23 74 3c 2f 73 ss=boolean>#t</s
94e0: 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 pan> (<span clas
94f0: 73 3d 76 61 72 69 61 62 6c 65 3e 63 6f 6c 75 6d s=variable>colum
9500: 6e 61 72 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 nar</span> (<spa
9510: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
9520: 3e 64 73 70 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 >dsp</span> <spa
9530: 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e 26 n class=string>&
9540: 71 75 6f 74 3b 61 62 63 6e 64 65 66 6e 26 71 75 quot;abcndefn&qu
9550: 6f 74 3b 3c 2f 73 70 61 6e 3e 29 20 28 3c 73 70 ot;</span>) (<sp
9560: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
9570: 65 3e 64 73 70 3c 2f 73 70 61 6e 3e 20 3c 73 70 e>dsp</span> <sp
9580: 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e an class=string>
9590: 26 71 75 6f 74 3b 31 32 33 6e 34 35 36 6e 26 71 "123n456n&q
95a0: 75 6f 74 3b 3c 2f 73 70 61 6e 3e 29 29 29 3c 2f uot;</span>)))</
95b0: 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 6f 75 74 70 75 code>.<p>..outpu
95c0: 74 73 0a 3c 70 3e 0a 0a 3c 70 72 65 3e 0a 20 20 ts.<p>..<pre>.
95d0: 20 20 20 61 62 63 20 20 20 20 20 31 32 33 0a 20 abc 123.
95e0: 20 20 20 20 64 65 66 20 20 20 20 20 34 35 36 0a def 456.
95f0: 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 0a 61 73 73 75 </pre>.<p>..assu
9600: 6d 69 6e 67 20 61 20 31 36 2d 63 68 61 72 20 77 ming a 16-char w
9610: 69 64 74 68 20 28 74 68 65 20 6c 65 66 74 20 73 idth (the left s
9620: 69 64 65 20 67 65 74 73 20 68 61 6c 66 20 74 68 ide gets half th
9630: 65 20 77 69 64 74 68 2c 20 6f 72 20 38 0a 73 70 e width, or 8.sp
9640: 61 63 65 73 2c 20 61 6e 64 20 69 73 20 6c 65 66 aces, and is lef
9650: 74 20 61 6c 69 67 6e 65 64 29 2e 20 20 4e 6f 74 t aligned). Not
9660: 65 20 74 68 61 74 20 77 65 20 65 78 70 6c 69 63 e that we explic
9670: 69 74 6c 79 20 75 73 65 20 44 53 50 20 69 6e 73 itly use DSP ins
9680: 74 65 61 64 0a 6f 66 20 74 68 65 20 73 74 72 69 tead.of the stri
9690: 6e 67 73 20 64 69 72 65 63 74 6c 79 2e 20 20 54 ngs directly. T
96a0: 68 69 73 20 69 73 20 62 65 63 61 75 73 65 20 3c his is because <
96b0: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
96c0: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
96d0: 72 69 61 62 6c 65 3e 63 6f 6c 75 6d 6e 61 72 3c riable>columnar<
96e0: 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 74 72 /span></code> tr
96f0: 65 61 74 73 20 72 61 77 0a 73 74 72 69 6e 67 73 eats raw.strings
9700: 20 61 73 20 6c 69 74 65 72 61 6c 73 20 69 6e 73 as literals ins
9710: 65 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20 67 erted into the g
9720: 69 76 65 6e 20 6c 6f 63 61 74 69 6f 6e 20 6f 6e iven location on
9730: 20 65 76 65 72 79 20 6c 69 6e 65 2c 20 74 6f 0a every line, to.
9740: 62 65 20 75 73 65 64 20 61 73 20 62 6f 72 64 65 be used as borde
9750: 72 73 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 3a rs, for example:
9760: 0a 3c 70 3e 0a 0a 3c 70 72 65 20 63 6c 61 73 73 .<p>..<pre class
9770: 3d 73 63 68 65 6d 65 3e 0a 20 20 28 3c 73 70 61 =scheme>. (<spa
9780: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
9790: 3e 66 6d 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 >fmt</span> <spa
97a0: 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c 65 61 6e 3e n class=boolean>
97b0: 23 74 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e #t</span> (<span
97c0: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
97d0: 63 6f 6c 75 6d 6e 61 72 3c 2f 73 70 61 6e 3e 20 columnar</span>
97e0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 <span class=stri
97f0: 6e 67 3e 26 71 75 6f 74 3b 2f 2a 20 26 71 75 6f ng>"/* &quo
9800: 74 3b 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e t;</span> (<span
9810: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
9820: 64 73 70 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e dsp</span> <span
9830: 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 class=string>&q
9840: 75 6f 74 3b 61 62 63 6e 64 65 66 6e 26 71 75 6f uot;abcndefn&quo
9850: 74 3b 3c 2f 73 70 61 6e 3e 29 0a 20 20 20 20 20 t;</span>).
9860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c <
9870: 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e span class=strin
9880: 67 3e 26 71 75 6f 74 3b 20 7c 20 26 71 75 6f 74 g>" | "
9890: 3b 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e 20 ;</span> (<span
98a0: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 64 class=variable>d
98b0: 73 70 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 sp</span> <span
98c0: 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 class=string>&qu
98d0: 6f 74 3b 31 32 33 6e 34 35 36 6e 26 71 75 6f 74 ot;123n456n"
98e0: 3b 3c 2f 73 70 61 6e 3e 29 0a 20 20 20 20 20 20 ;</span>).
98f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 <s
9900: 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 pan class=string
9910: 3e 26 71 75 6f 74 3b 20 2a 2f 26 71 75 6f 74 3b >" */"
9920: 3c 2f 73 70 61 6e 3e 29 29 0a 3c 2f 70 72 65 3e </span>)).</pre>
9930: 0a 3c 70 3e 0a 0a 77 6f 75 6c 64 20 6f 75 74 70 .<p>..would outp
9940: 75 74 0a 3c 70 3e 0a 0a 3c 70 72 65 3e 0a 20 20 ut.<p>..<pre>.
9950: 2f 2a 20 61 62 63 20 7c 20 31 32 33 20 2a 2f 0a /* abc | 123 */.
9960: 20 20 2f 2a 20 64 65 66 20 7c 20 34 35 36 20 2a /* def | 456 *
9970: 2f 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 0a 59 6f /.</pre>.<p>..Yo
9980: 75 20 6d 61 79 20 61 6c 73 6f 20 70 72 65 66 69 u may also prefi
9990: 78 20 61 6e 79 20 63 6f 6c 75 6d 6e 20 77 69 74 x any column wit
99a0: 68 20 61 6e 79 20 6f 66 20 74 68 65 20 73 79 6d h any of the sym
99b0: 62 6f 6c 73 20 3c 63 6f 64 65 20 63 6c 61 73 73 bols <code class
99c0: 3d 73 63 68 65 6d 65 3e 27 3c 73 70 61 6e 20 63 =scheme>'<span c
99d0: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 6c 65 lass=variable>le
99e0: 66 74 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e ft</span></code>
99f0: 2c 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 ,.<code class=sc
9a00: 68 65 6d 65 3e 27 3c 73 70 61 6e 20 63 6c 61 73 heme>'<span clas
9a10: 73 3d 76 61 72 69 61 62 6c 65 3e 72 69 67 68 74 s=variable>right
9a20: 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 6f </span></code> o
9a30: 72 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 r <code class=sc
9a40: 68 65 6d 65 3e 27 3c 73 70 61 6e 20 63 6c 61 73 heme>'<span clas
9a50: 73 3d 76 61 72 69 61 62 6c 65 3e 63 65 6e 74 65 s=variable>cente
9a60: 72 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 r</span></code>
9a70: 74 6f 20 63 6f 6e 74 72 6f 6c 20 74 68 65 20 6a to control the j
9a80: 75 73 74 69 66 69 63 61 74 69 6f 6e 2e 20 20 54 ustification. T
9a90: 68 65 20 73 79 6d 62 6f 6c 0a 3c 63 6f 64 65 20 he symbol.<code
9aa0: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 27 3c 73 class=scheme>'<s
9ab0: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
9ac0: 6c 65 3e 69 6e 66 69 6e 69 74 65 3c 2f 73 70 61 le>infinite</spa
9ad0: 6e 3e 3c 2f 63 6f 64 65 3e 20 63 61 6e 20 62 65 n></code> can be
9ae0: 20 75 73 65 64 20 74 6f 20 69 6e 64 69 63 61 74 used to indicat
9af0: 65 20 74 68 65 20 63 6f 6c 75 6d 6e 20 67 65 6e e the column gen
9b00: 65 72 61 74 65 73 20 61 6e 20 69 6e 66 69 6e 69 erates an infini
9b10: 74 65 0a 73 74 72 65 61 6d 20 6f 66 20 6f 75 74 te.stream of out
9b20: 70 75 74 2e 0a 3c 70 3e 0a 0a 59 6f 75 20 63 61 put..<p>..You ca
9b30: 6e 20 66 75 72 74 68 65 72 20 70 72 65 66 69 78 n further prefix
9b40: 20 61 6e 79 20 63 6f 6c 75 6d 6e 20 77 69 74 68 any column with
9b50: 20 61 20 77 69 64 74 68 20 6d 6f 64 69 66 69 65 a width modifie
9b60: 72 2e 20 20 41 6e 79 0a 70 6f 73 69 74 69 76 65 r. Any.positive
9b70: 20 69 6e 74 65 67 65 72 20 69 73 20 74 72 65 61 integer is trea
9b80: 74 65 64 20 61 73 20 61 20 66 69 78 65 64 20 77 ted as a fixed w
9b90: 69 64 74 68 2c 20 69 67 6e 6f 72 69 6e 67 20 74 idth, ignoring t
9ba0: 68 65 20 61 76 61 69 6c 61 62 6c 65 0a 77 69 64 he available.wid
9bb0: 74 68 2e 20 20 41 6e 79 20 72 65 61 6c 20 6e 75 th. Any real nu
9bc0: 6d 62 65 72 20 62 65 74 77 65 65 6e 20 30 20 61 mber between 0 a
9bd0: 6e 64 20 31 20 69 6e 64 69 63 61 74 65 73 20 61 nd 1 indicates a
9be0: 20 66 72 61 63 74 69 6f 6e 20 6f 66 20 74 68 65 fraction of the
9bf0: 0a 61 76 61 69 6c 61 62 6c 65 20 77 69 64 74 68 .available width
9c00: 20 28 61 66 74 65 72 20 73 75 62 74 72 61 63 74 (after subtract
9c10: 69 6e 67 20 6f 75 74 20 61 6e 79 20 66 69 78 65 ing out any fixe
9c20: 64 20 77 69 64 74 68 73 29 2e 20 20 43 6f 6c 75 d widths). Colu
9c30: 6d 6e 73 0a 77 69 74 68 20 75 6e 73 70 65 63 69 mns.with unspeci
9c40: 66 69 65 64 20 77 69 64 74 68 20 64 69 76 69 64 fied width divid
9c50: 65 20 75 70 20 74 68 65 20 72 65 6d 61 69 6e 69 e up the remaini
9c60: 6e 67 20 77 69 64 74 68 20 65 76 65 6e 6c 79 2e ng width evenly.
9c70: 0a 3c 70 3e 0a 0a 4e 6f 74 65 20 74 68 61 74 20 .<p>..Note that
9c80: 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
9c90: 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 me><span class=v
9ca0: 61 72 69 61 62 6c 65 3e 63 6f 6c 75 6d 6e 61 72 ariable>columnar
9cb0: 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 62 </span></code> b
9cc0: 75 69 6c 64 73 20 69 74 73 20 6f 75 74 70 75 74 uilds its output
9cd0: 20 69 6e 63 72 65 6d 65 6e 74 61 6c 6c 79 2c 20 incrementally,
9ce0: 69 6e 74 65 72 6c 65 61 76 69 6e 67 0a 63 61 6c interleaving.cal
9cf0: 6c 73 20 74 6f 20 74 68 65 20 67 65 6e 65 72 61 ls to the genera
9d00: 74 6f 72 73 20 75 6e 74 69 6c 20 65 61 63 68 20 tors until each
9d10: 68 61 73 20 70 72 6f 64 75 63 65 64 20 61 20 6c has produced a l
9d20: 69 6e 65 2c 20 74 68 65 6e 0a 63 6f 6e 63 61 74 ine, then.concat
9d30: 65 6e 61 74 69 6e 67 20 74 68 61 74 20 6c 69 6e enating that lin
9d40: 65 20 74 6f 67 65 74 68 65 72 20 61 6e 64 20 6f e together and o
9d50: 75 74 70 75 74 74 69 6e 67 20 69 74 2e 20 20 54 utputting it. T
9d60: 68 69 73 20 69 73 20 69 6d 70 6f 72 74 61 6e 74 his is important
9d70: 0a 62 65 63 61 75 73 65 20 61 73 20 6e 6f 74 65 .because as note
9d80: 64 20 61 62 6f 76 65 2c 20 73 6f 6d 65 20 63 6f d above, some co
9d90: 6c 75 6d 6e 73 20 6d 61 79 20 70 72 6f 64 75 63 lumns may produc
9da0: 65 20 61 6e 20 69 6e 66 69 6e 69 74 65 20 73 74 e an infinite st
9db0: 72 65 61 6d 20 6f 66 0a 6f 75 74 70 75 74 2c 20 ream of.output,
9dc0: 61 6e 64 20 69 6e 20 67 65 6e 65 72 61 6c 20 79 and in general y
9dd0: 6f 75 20 6d 61 79 20 77 61 6e 74 20 74 6f 20 66 ou may want to f
9de0: 6f 72 6d 61 74 20 64 61 74 61 20 6c 61 72 67 65 ormat data large
9df0: 72 20 74 68 61 6e 20 63 61 6e 20 66 69 74 0a 69 r than can fit.i
9e00: 6e 74 6f 20 6d 65 6d 6f 72 79 2e 20 20 54 68 75 nto memory. Thu
9e10: 73 20 63 6f 6c 75 6d 6e 61 72 20 77 6f 75 6c 64 s columnar would
9e20: 20 62 65 20 73 75 69 74 61 62 6c 65 20 66 6f 72 be suitable for
9e30: 20 6c 69 6e 65 20 6e 75 6d 62 65 72 69 6e 67 20 line numbering
9e40: 61 0a 66 69 6c 65 20 6f 66 20 61 72 62 69 74 72 a.file of arbitr
9e50: 61 72 79 20 73 69 7a 65 2c 20 6f 72 20 69 6d 70 ary size, or imp
9e60: 6c 65 6d 65 6e 74 69 6e 67 20 74 68 65 20 55 6e lementing the Un
9e70: 69 78 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 ix <code class=s
9e80: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
9e90: 73 3d 76 61 72 69 61 62 6c 65 3e 79 65 73 3c 2f s=variable>yes</
9ea0: 73 70 61 6e 3e 28 3c 73 70 61 6e 20 63 6c 61 73 span>(<span clas
9eb0: 73 3d 6e 75 6d 62 65 72 3e 31 3c 2f 73 70 61 6e s=number>1</span
9ec0: 3e 29 3c 2f 63 6f 64 65 3e 20 63 6f 6d 6d 61 6e >)</code> comman
9ed0: 64 2c 0a 65 74 63 2e 0a 3c 70 3e 0a 0a 41 73 20 d,.etc..<p>..As
9ee0: 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f an implementatio
9ef0: 6e 20 64 65 74 61 69 6c 2c 20 3c 63 6f 64 65 20 n detail, <code
9f00: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
9f10: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
9f20: 65 3e 63 6f 6c 75 6d 6e 61 72 3c 2f 73 70 61 6e e>columnar</span
9f30: 3e 3c 2f 63 6f 64 65 3e 20 75 73 65 73 20 66 69 ></code> uses fi
9f40: 72 73 74 2d 63 6c 61 73 73 0a 63 6f 6e 74 69 6e rst-class.contin
9f50: 75 61 74 69 6f 6e 73 20 74 6f 20 69 6e 74 65 72 uations to inter
9f60: 6c 65 61 76 65 20 74 68 65 20 63 6f 6c 75 6d 6e leave the column
9f70: 20 6f 75 74 70 75 74 2e 20 20 54 68 65 20 63 6f output. The co
9f80: 72 65 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 re <code class=s
9f90: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
9fa0: 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 3c 2f s=variable>fmt</
9fb0: 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 0a 69 74 73 span></code>.its
9fc0: 65 6c 66 20 68 61 73 20 6e 6f 20 6b 6e 6f 77 6c elf has no knowl
9fd0: 65 64 67 65 20 6f 66 20 6f 72 20 73 70 65 63 69 edge of or speci
9fe0: 61 6c 20 73 75 70 70 6f 72 74 20 66 6f 72 20 3c al support for <
9ff0: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
a000: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
a010: 72 69 61 62 6c 65 3e 63 6f 6c 75 6d 6e 61 72 3c riable>columnar<
a020: 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 77 /span></code>, w
a030: 68 69 63 68 0a 63 6f 75 6c 64 20 63 6f 6d 70 6c hich.could compl
a040: 69 63 61 74 65 20 61 6e 64 20 70 6f 74 65 6e 74 icate and potent
a050: 69 61 6c 6c 79 20 73 6c 6f 77 20 64 6f 77 6e 20 ially slow down
a060: 73 69 6d 70 6c 65 72 20 3c 63 6f 64 65 20 63 6c simpler <code cl
a070: 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e ass=scheme><span
a080: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
a090: 66 6d 74 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 fmt</span></code
a0a0: 3e 20 6f 70 65 72 61 74 69 6f 6e 73 2e 0a 54 68 > operations..Th
a0b0: 69 73 20 69 73 20 61 20 74 65 73 74 61 6d 65 6e is is a testamen
a0c0: 74 20 74 6f 20 74 68 65 20 70 6f 77 65 72 20 6f t to the power o
a0d0: 66 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 f <code class=sc
a0e0: 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 heme><span class
a0f0: 3d 76 61 72 69 61 62 6c 65 3e 63 61 6c 6c 2f 63 =variable>call/c
a100: 63 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 c</span></code>
a110: 2d 20 69 74 20 63 61 6e 20 62 65 20 75 73 65 64 - it can be used
a120: 20 74 6f 0a 69 6d 70 6c 65 6d 65 6e 74 20 63 6f to.implement co
a130: 72 6f 75 74 69 6e 65 73 20 6f 72 20 61 72 62 69 routines or arbi
a140: 74 72 61 72 79 20 63 6f 6e 74 72 6f 6c 20 73 74 trary control st
a150: 72 75 63 74 75 72 65 73 20 65 76 65 6e 20 77 68 ructures even wh
a160: 65 72 65 20 74 68 65 79 0a 77 65 72 65 20 6e 6f ere they.were no
a170: 74 20 70 6c 61 6e 6e 65 64 20 66 6f 72 2e 0a 3c t planned for..<
a180: 70 3e 0a 0a 3c 68 33 3e 28 74 61 62 75 6c 61 72 p>..<h3>(tabular
a190: 20 26 6c 74 3b 63 6f 6c 75 6d 6e 26 67 74 3b 20 <column>
a1a0: 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a 45 71 75 69 76 ...)</h3>..Equiv
a1b0: 61 6c 65 6e 74 20 74 6f 20 3c 63 6f 64 65 20 63 alent to <code c
a1c0: 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 lass=scheme><spa
a1d0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
a1e0: 3e 63 6f 6c 75 6d 6e 61 72 3c 2f 73 70 61 6e 3e >columnar</span>
a1f0: 3c 2f 63 6f 64 65 3e 20 65 78 63 65 70 74 20 74 </code> except t
a200: 68 61 74 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20 hat each column
a210: 69 73 20 70 61 64 64 65 64 20 61 74 20 6c 65 61 is padded at lea
a220: 73 74 0a 74 6f 20 74 68 65 20 6d 69 6e 69 6d 75 st.to the minimu
a230: 6d 20 77 69 64 74 68 20 72 65 71 75 69 72 65 64 m width required
a240: 20 6f 6e 20 61 6e 79 20 6f 66 20 69 74 73 20 6c on any of its l
a250: 69 6e 65 73 2e 20 20 54 68 75 73 0a 3c 70 3e 0a ines. Thus.<p>.
a260: 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 .<code class=sch
a270: 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 eme>(<span class
a280: 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 =variable>fmt</s
a290: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
a2a0: 3d 62 6f 6f 6c 65 61 6e 3e 23 74 3c 2f 73 70 61 =boolean>#t</spa
a2b0: 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d n> (<span class=
a2c0: 76 61 72 69 61 62 6c 65 3e 74 61 62 75 6c 61 72 variable>tabular
a2d0: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
a2e0: 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 ass=string>"
a2f0: 3b 7c 22 20 28 64 73 70 20 26 71 75 6f 74 3b 3c ;|" (dsp "<
a300: 2f 73 70 61 6e 3e 3c 73 70 61 6e 20 63 6c 61 73 /span><span clas
a310: 73 3d 76 61 72 69 61 62 6c 65 3e 61 5c 5c 6e 62 s=variable>a\\nb
a320: 63 5c 5c 6e 64 65 66 5c 5c 6e 3c 2f 73 70 61 6e c\\ndef\\n</span
a330: 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 ><span class=str
a340: 69 6e 67 3e 26 71 75 6f 74 3b 29 20 26 71 75 6f ing>") &quo
a350: 74 3b 3c 2f 73 70 61 6e 3e 7c 22 20 28 3c 73 70 t;</span>|" (<sp
a360: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
a370: 65 3e 64 73 70 3c 2f 73 70 61 6e 3e 20 3c 73 70 e>dsp</span> <sp
a380: 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e an class=string>
a390: 26 71 75 6f 74 3b 31 32 33 6e 34 35 6e 36 6e 26 "123n45n6n&
a3a0: 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 29 20 3c 73 quot;</span>) <s
a3b0: 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 pan class=string
a3c0: 3e 26 71 75 6f 74 3b 7c 22 29 29 3c 2f 73 70 61 >"|"))</spa
a3d0: 6e 3e 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 6f n></code>.<p>..o
a3e0: 75 74 70 75 74 73 0a 3c 70 3e 0a 0a 3c 70 72 65 utputs.<p>..<pre
a3f0: 3e 0a 7c 61 20 20 7c 31 32 33 7c 0a 7c 62 63 20 >.|a |123|.|bc
a400: 7c 34 35 20 7c 0a 7c 64 65 66 7c 36 20 20 7c 0a |45 |.|def|6 |.
a410: 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 0a 54 68 69 73 </pre>.<p>..This
a420: 20 6d 61 6b 65 73 20 69 74 20 65 61 73 69 65 72 makes it easier
a430: 20 74 6f 20 67 65 6e 65 72 61 74 65 20 74 61 62 to generate tab
a440: 6c 65 73 20 77 69 74 68 6f 75 74 20 6b 6e 6f 77 les without know
a450: 69 6e 67 20 77 69 64 74 68 73 20 69 6e 0a 61 64 ing widths in.ad
a460: 76 61 6e 63 65 2e 20 20 48 6f 77 65 76 65 72 2c vance. However,
a470: 20 62 65 63 61 75 73 65 20 69 74 20 72 65 71 75 because it requ
a480: 69 72 65 73 20 67 65 6e 65 72 61 74 69 6e 67 20 ires generating
a490: 74 68 65 20 65 6e 74 69 72 65 20 6f 75 74 70 75 the entire outpu
a4a0: 74 20 69 6e 0a 61 64 76 61 6e 63 65 20 74 6f 20 t in.advance to
a4b0: 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 63 6f determine the co
a4c0: 72 72 65 63 74 20 63 6f 6c 75 6d 6e 20 77 69 64 rrect column wid
a4d0: 74 68 73 2c 20 3c 63 6f 64 65 20 63 6c 61 73 73 ths, <code class
a4e0: 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c =scheme><span cl
a4f0: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 74 61 62 ass=variable>tab
a500: 75 6c 61 72 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 ular</span></cod
a510: 65 3e 20 63 61 6e 6e 6f 74 0a 66 6f 72 6d 61 74 e> cannot.format
a520: 20 61 20 74 61 62 6c 65 20 6c 61 72 67 65 72 20 a table larger
a530: 74 68 61 6e 20 77 6f 75 6c 64 20 66 69 74 20 69 than would fit i
a540: 6e 20 6d 65 6d 6f 72 79 2e 0a 3c 70 3e 0a 0a 3c n memory..<p>..<
a550: 68 33 3e 28 66 6d 74 2d 63 6f 6c 75 6d 6e 73 20 h3>(fmt-columns
a560: 26 6c 74 3b 63 6f 6c 75 6d 6e 26 67 74 3b 20 2e <column> .
a570: 2e 2e 29 3c 2f 68 33 3e 0a 0a 54 68 65 20 6c 6f ..)</h3>..The lo
a580: 77 2d 6c 65 76 65 6c 20 66 6f 72 6d 61 74 74 65 w-level formatte
a590: 72 20 6f 6e 20 77 68 69 63 68 20 3c 63 6f 64 65 r on which <code
a5a0: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
a5b0: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
a5c0: 6c 65 3e 63 6f 6c 75 6d 6e 61 72 3c 2f 73 70 61 le>columnar</spa
a5d0: 6e 3e 3c 2f 63 6f 64 65 3e 20 69 73 20 62 61 73 n></code> is bas
a5e0: 65 64 2e 20 20 45 61 63 68 20 3c 63 6f 64 65 20 ed. Each <code
a5f0: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
a600: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
a610: 65 3e 26 6c 74 3b 63 6f 6c 75 6d 6e 26 67 74 3b e><column>
a620: 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 0a 6d </span></code>.m
a630: 75 73 74 20 62 65 20 61 20 6c 69 73 74 20 6f 66 ust be a list of
a640: 20 32 2d 33 20 65 6c 65 6d 65 6e 74 73 3a 0a 3c 2-3 elements:.<
a650: 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d p>..<code class=
a660: 73 63 68 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c scheme>(<span cl
a670: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 ass=variable><
a680: 3b 6c 69 6e 65 2d 66 6f 72 6d 61 74 74 65 72 26 ;line-formatter&
a690: 67 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e gt;</span> <span
a6a0: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
a6b0: 26 6c 74 3b 6c 69 6e 65 2d 67 65 6e 65 72 61 74 <line-generat
a6c0: 6f 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 5b 3c or></span> [<
a6d0: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
a6e0: 62 6c 65 3e 26 6c 74 3b 69 6e 66 69 6e 69 74 65 ble><infinite
a6f0: 3f 26 67 74 3b 3c 2f 73 70 61 6e 3e 5d 29 3c 2f ?></span>])</
a700: 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 77 68 65 72 65 code>.<p>..where
a710: 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 <code class=sch
a720: 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d eme><span class=
a730: 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 6c 69 6e variable><lin
a740: 65 2d 67 65 6e 65 72 61 74 6f 72 26 67 74 3b 3c e-generator><
a750: 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 69 73 /span></code> is
a760: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 67 65 6e 65 the column gene
a770: 72 61 74 6f 72 20 61 73 20 61 62 6f 76 65 2c 20 rator as above,
a780: 61 6e 64 20 74 68 65 0a 3c 63 6f 64 65 20 63 6c and the.<code cl
a790: 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e ass=scheme><span
a7a0: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
a7b0: 26 6c 74 3b 6c 69 6e 65 2d 66 6f 72 6d 61 74 74 <line-formatt
a7c0: 65 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 er></span></c
a7d0: 6f 64 65 3e 20 69 73 20 68 6f 77 20 65 61 63 68 ode> is how each
a7e0: 20 6c 69 6e 65 20 69 73 20 66 6f 72 6d 61 74 74 line is formatt
a7f0: 65 64 2e 20 20 52 61 77 20 63 6f 6e 63 61 74 65 ed. Raw concate
a800: 6e 61 74 69 6f 6e 0a 6f 66 20 65 61 63 68 20 6c nation.of each l
a810: 69 6e 65 20 69 73 20 70 65 72 66 6f 72 6d 65 64 ine is performed
a820: 2c 20 77 69 74 68 6f 75 74 20 61 6e 79 20 73 70 , without any sp
a830: 61 63 69 6e 67 20 6f 72 20 77 69 64 74 68 20 61 acing or width a
a840: 64 6a 75 73 74 6d 65 6e 74 2e 0a 3c 63 6f 64 65 djustment..<code
a850: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
a860: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
a870: 6c 65 3e 26 6c 74 3b 69 6e 66 69 6e 69 74 65 3f le><infinite?
a880: 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 ></span></cod
a890: 65 3e 2c 20 69 66 20 74 72 75 65 2c 20 69 6e 64 e>, if true, ind
a8a0: 69 63 61 74 65 73 20 74 68 69 73 20 67 65 6e 65 icates this gene
a8b0: 72 61 74 6f 72 20 70 72 6f 64 75 63 65 73 20 61 rator produces a
a8c0: 6e 0a 69 6e 66 69 6e 69 74 65 20 6e 75 6d 62 65 n.infinite numbe
a8d0: 72 20 6f 66 20 6c 69 6e 65 73 20 61 6e 64 20 74 r of lines and t
a8e0: 65 72 6d 69 6e 61 74 69 6f 6e 20 73 68 6f 75 6c ermination shoul
a8f0: 64 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20 d be determined
a900: 77 69 74 68 6f 75 74 0a 69 74 2e 0a 3c 70 3e 0a without.it..<p>.
a910: 0a 3c 68 33 3e 28 77 72 61 70 2d 6c 69 6e 65 73 .<h3>(wrap-lines
a920: 20 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b 20 <format>
a930: 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a 42 65 68 61 76 ...)</h3>..Behav
a940: 65 73 20 6c 69 6b 65 20 3c 63 6f 64 65 20 63 6c es like <code cl
a950: 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e ass=scheme><span
a960: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
a970: 63 61 74 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 cat</span></code
a980: 3e 2c 20 65 78 63 65 70 74 20 74 65 78 74 20 69 >, except text i
a990: 73 20 61 63 63 75 6d 75 6c 61 74 65 64 20 61 6e s accumulated an
a9a0: 64 20 6c 69 6e 65 73 20 61 72 65 20 6f 70 74 69 d lines are opti
a9b0: 6d 61 6c 6c 79 0a 77 72 61 70 70 65 64 20 74 6f mally.wrapped to
a9c0: 20 66 69 74 20 69 6e 20 74 68 65 20 63 75 72 72 fit in the curr
a9d0: 65 6e 74 20 77 69 64 74 68 20 61 73 20 69 6e 20 ent width as in
a9e0: 74 68 65 20 55 6e 69 78 20 3c 63 6f 64 65 3e 66 the Unix <code>f
a9f0: 6d 74 28 31 29 3c 2f 63 6f 64 65 3e 20 63 6f 6d mt(1)</code> com
aa00: 6d 61 6e 64 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 mand..<p>..<h3>(
aa10: 6a 75 73 74 69 66 79 20 26 6c 74 3b 66 6f 72 6d justify <form
aa20: 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e at> ...)</h3>
aa30: 0a 0a 4c 69 6b 65 20 3c 63 6f 64 65 20 63 6c 61 ..Like <code cla
aa40: 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 ss=scheme><span
aa50: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 77 class=variable>w
aa60: 72 61 70 2d 6c 69 6e 65 73 3c 2f 73 70 61 6e 3e rap-lines</span>
aa70: 3c 2f 63 6f 64 65 3e 20 65 78 63 65 70 74 20 74 </code> except t
aa80: 68 65 20 6c 69 6e 65 73 20 61 72 65 20 66 75 6c he lines are ful
aa90: 6c 2d 6a 75 73 74 69 66 69 65 64 2e 0a 3c 70 3e l-justified..<p>
aaa0: 0a 0a 3c 70 72 65 20 63 6c 61 73 73 3d 73 63 68 ..<pre class=sch
aab0: 65 6d 65 3e 0a 20 20 28 3c 73 70 61 6e 20 63 6c eme>. (<span cl
aac0: 61 73 73 3d 6b 65 79 77 6f 72 64 3e 64 65 66 69 ass=keyword>defi
aad0: 6e 65 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 ne</span> <span
aae0: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 class=variable>f
aaf0: 75 6e 63 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 27 unc</span>. '
ab00: 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6b 65 79 (<span class=key
ab10: 77 6f 72 64 3e 64 65 66 69 6e 65 3c 2f 73 70 61 word>define</spa
ab20: 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d n> (<span class=
ab30: 76 61 72 69 61 62 6c 65 3e 66 6f 6c 64 3c 2f 73 variable>fold</s
ab40: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
ab50: 3d 76 61 72 69 61 62 6c 65 3e 6b 6f 6e 73 3c 2f =variable>kons</
ab60: 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 span> <span clas
ab70: 73 3d 76 61 72 69 61 62 6c 65 3e 6b 6e 69 6c 3c s=variable>knil<
ab80: 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
ab90: 73 73 3d 76 61 72 69 61 62 6c 65 3e 6c 73 3c 2f ss=variable>ls</
aba0: 73 70 61 6e 3e 29 0a 20 20 20 20 20 20 20 28 3c span>). (<
abb0: 73 70 61 6e 20 63 6c 61 73 73 3d 6b 65 79 77 6f span class=keywo
abc0: 72 64 3e 6c 65 74 3c 2f 73 70 61 6e 3e 20 3c 73 rd>let</span> <s
abd0: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
abe0: 6c 65 3e 6c 70 3c 2f 73 70 61 6e 3e 20 28 28 3c le>lp</span> ((<
abf0: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
ac00: 62 6c 65 3e 6c 73 3c 2f 73 70 61 6e 3e 20 3c 73 ble>ls</span> <s
ac10: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
ac20: 6c 65 3e 6c 73 3c 2f 73 70 61 6e 3e 29 20 28 3c le>ls</span>) (<
ac30: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
ac40: 62 6c 65 3e 61 63 63 3c 2f 73 70 61 6e 3e 20 3c ble>acc</span> <
ac50: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
ac60: 62 6c 65 3e 6b 6e 69 6c 3c 2f 73 70 61 6e 3e 29 ble>knil</span>)
ac70: 29 0a 20 20 20 20 20 20 20 20 20 28 3c 73 70 61 ). (<spa
ac80: 6e 20 63 6c 61 73 73 3d 6b 65 79 77 6f 72 64 3e n class=keyword>
ac90: 69 66 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e if</span> (<span
aca0: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
acb0: 6e 75 6c 6c 3f 3c 2f 73 70 61 6e 3e 20 3c 73 70 null?</span> <sp
acc0: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
acd0: 65 3e 6c 73 3c 2f 73 70 61 6e 3e 29 20 3c 73 70 e>ls</span>) <sp
ace0: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
acf0: 65 3e 61 63 63 3c 2f 73 70 61 6e 3e 20 28 3c 73 e>acc</span> (<s
ad00: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
ad10: 6c 65 3e 6c 70 3c 2f 73 70 61 6e 3e 20 28 3c 73 le>lp</span> (<s
ad20: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
ad30: 6c 65 3e 63 64 72 3c 2f 73 70 61 6e 3e 20 3c 73 le>cdr</span> <s
ad40: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
ad50: 6c 65 3e 6c 73 3c 2f 73 70 61 6e 3e 29 20 28 3c le>ls</span>) (<
ad60: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
ad70: 62 6c 65 3e 6b 6f 6e 73 3c 2f 73 70 61 6e 3e 20 ble>kons</span>
ad80: 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 (<span class=var
ad90: 69 61 62 6c 65 3e 63 61 72 3c 2f 73 70 61 6e 3e iable>car</span>
ada0: 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 <span class=var
adb0: 69 61 62 6c 65 3e 6c 73 3c 2f 73 70 61 6e 3e 29 iable>ls</span>)
adc0: 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 <span class=var
add0: 69 61 62 6c 65 3e 61 63 63 3c 2f 73 70 61 6e 3e iable>acc</span>
ade0: 29 29 29 29 29 29 0a 0a 20 20 28 3c 73 70 61 6e )))))).. (<span
adf0: 20 63 6c 61 73 73 3d 6b 65 79 77 6f 72 64 3e 64 class=keyword>d
ae00: 65 66 69 6e 65 3c 2f 73 70 61 6e 3e 20 3c 73 70 efine</span> <sp
ae10: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
ae20: 65 3e 64 6f 63 3c 2f 73 70 61 6e 3e 0a 20 20 20 e>doc</span>.
ae30: 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 (<span class=va
ae40: 72 69 61 62 6c 65 3e 73 74 72 69 6e 67 2d 61 70 riable>string-ap
ae50: 70 65 6e 64 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 pend</span>.
ae60: 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 <span class=st
ae70: 72 69 6e 67 3e 26 71 75 6f 74 3b 54 68 65 20 66 ring>"The f
ae80: 75 6e 64 61 6d 65 6e 74 61 6c 20 6c 69 73 74 20 undamental list
ae90: 69 74 65 72 61 74 6f 72 2e 20 20 41 70 70 6c 69 iterator. Appli
aea0: 65 73 20 4b 4f 4e 53 20 74 6f 20 65 61 63 68 20 es KONS to each
aeb0: 65 6c 65 6d 65 6e 74 20 26 71 75 6f 74 3b 3c 2f element "</
aec0: 73 70 61 6e 3e 0a 20 20 20 20 20 20 3c 73 70 61 span>. <spa
aed0: 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e 26 n class=string>&
aee0: 71 75 6f 74 3b 6f 66 20 4c 53 20 61 6e 64 20 74 quot;of LS and t
aef0: 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 he result of the
af00: 20 70 72 65 76 69 6f 75 73 20 61 70 70 6c 69 63 previous applic
af10: 61 74 69 6f 6e 2c 20 62 65 67 69 6e 6e 69 6e 67 ation, beginning
af20: 20 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 0a 20 "</span>.
af30: 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 <span class
af40: 3d 73 74 72 69 6e 67 3e 26 71 75 6f 74 3b 77 69 =string>"wi
af50: 74 68 20 4b 4e 49 4c 2e 20 20 57 69 74 68 20 4b th KNIL. With K
af60: 4f 4e 53 20 61 73 20 43 4f 4e 53 20 61 6e 64 20 ONS as CONS and
af70: 4b 4e 49 4c 20 61 73 20 27 28 29 2c 20 65 71 75 KNIL as '(), equ
af80: 69 76 61 6c 65 6e 74 20 74 6f 20 52 45 56 45 52 ivalent to REVER
af90: 53 45 2e 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e SE."</span>
afa0: 29 29 0a 0a 20 20 28 3c 73 70 61 6e 20 63 6c 61 )).. (<span cla
afb0: 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 3c ss=variable>fmt<
afc0: 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
afd0: 73 73 3d 62 6f 6f 6c 65 61 6e 3e 23 74 3c 2f 73 ss=boolean>#t</s
afe0: 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 pan> (<span clas
aff0: 73 3d 76 61 72 69 61 62 6c 65 3e 63 6f 6c 75 6d s=variable>colum
b000: 6e 61 72 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 nar</span> (<spa
b010: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
b020: 3e 70 72 65 74 74 79 3c 2f 73 70 61 6e 3e 20 3c >pretty</span> <
b030: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
b040: 62 6c 65 3e 66 75 6e 63 3c 2f 73 70 61 6e 3e 29 ble>func</span>)
b050: 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 72 <span class=str
b060: 69 6e 67 3e 26 71 75 6f 74 3b 20 3b 20 26 71 75 ing>" ; &qu
b070: 6f 74 3b 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 ot;</span> (<spa
b080: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
b090: 3e 6a 75 73 74 69 66 79 3c 2f 73 70 61 6e 3e 20 >justify</span>
b0a0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
b0b0: 61 62 6c 65 3e 64 6f 63 3c 2f 73 70 61 6e 3e 29 able>doc</span>)
b0c0: 29 29 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 0a 6f )).</pre>.<p>..o
b0d0: 75 74 70 75 74 73 0a 3c 70 3e 0a 0a 3c 70 72 65 utputs.<p>..<pre
b0e0: 3e 0a 20 20 28 64 65 66 69 6e 65 20 28 66 6f 6c >. (define (fol
b0f0: 64 20 6b 6f 6e 73 20 6b 6e 69 6c 20 6c 73 29 20 d kons knil ls)
b100: 20 20 20 20 20 20 20 20 20 3b 20 54 68 65 20 20 ; The
b110: 20 66 75 6e 64 61 6d 65 6e 74 61 6c 20 20 20 6c fundamental l
b120: 69 73 74 20 20 20 69 74 65 72 61 74 6f 72 2e 0a ist iterator..
b130: 20 20 20 20 28 6c 65 74 20 6c 70 20 28 28 6c 73 (let lp ((ls
b140: 20 6c 73 29 20 28 61 63 63 20 6b 6e 69 6c 29 29 ls) (acc knil))
b150: 20 20 20 20 20 20 20 3b 20 41 70 70 6c 69 65 73 ; Applies
b160: 20 20 4b 4f 4e 53 20 20 74 6f 20 20 65 61 63 68 KONS to each
b170: 20 20 65 6c 65 6d 65 6e 74 20 20 6f 66 0a 20 20 element of.
b180: 20 20 20 20 28 69 66 20 28 6e 75 6c 6c 3f 20 6c (if (null? l
b190: 73 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s)
b1a0: 20 20 20 20 20 3b 20 4c 53 20 20 61 6e 64 20 20 ; LS and
b1b0: 74 68 65 20 20 72 65 73 75 6c 74 20 6f 66 20 74 the result of t
b1c0: 68 65 20 70 72 65 76 69 6f 75 73 0a 20 20 20 20 he previous.
b1d0: 20 20 20 20 20 20 61 63 63 20 20 20 20 20 20 20 acc
b1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b1f0: 20 20 20 3b 20 61 70 70 6c 69 63 61 74 69 6f 6e ; application
b200: 2c 20 20 62 65 67 69 6e 6e 69 6e 67 20 20 77 69 , beginning wi
b210: 74 68 20 20 4b 4e 49 4c 2e 0a 20 20 20 20 20 20 th KNIL..
b220: 20 20 20 20 28 6c 70 20 28 63 64 72 20 6c 73 29 (lp (cdr ls)
b230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b240: 20 3b 20 57 69 74 68 20 20 4b 4f 4e 53 20 20 61 ; With KONS a
b250: 73 20 43 4f 4e 53 20 61 6e 64 20 4b 4e 49 4c 20 s CONS and KNIL
b260: 61 73 20 27 28 29 2c 0a 20 20 20 20 20 20 20 20 as '(),.
b270: 20 20 20 20 20 20 28 6b 6f 6e 73 20 28 63 61 72 (kons (car
b280: 20 6c 73 29 20 61 63 63 29 29 29 29 29 20 20 3b ls) acc))))) ;
b290: 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 52 equivalent to R
b2a0: 45 56 45 52 53 45 2e 0a 3c 2f 70 72 65 3e 0a 3c EVERSE..</pre>.<
b2b0: 70 3e 0a 0a 3c 68 33 3e 28 66 6d 74 2d 66 69 6c p>..<h3>(fmt-fil
b2c0: 65 20 26 6c 74 3b 70 61 74 68 6e 61 6d 65 26 67 e <pathname&g
b2d0: 74 3b 29 3c 2f 68 33 3e 0a 0a 53 69 6d 70 6c 79 t;)</h3>..Simply
b2e0: 20 64 69 73 70 6c 61 79 65 73 20 74 68 65 20 63 displayes the c
b2f0: 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 66 ontents of the f
b300: 69 6c 65 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d ile <code class=
b310: 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 scheme><span cla
b320: 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b ss=variable><
b330: 70 61 74 68 6e 61 6d 65 26 67 74 3b 3c 2f 73 70 pathname></sp
b340: 61 6e 3e 3c 2f 63 6f 64 65 3e 20 61 20 6c 69 6e an></code> a lin
b350: 65 20 61 74 20 61 0a 74 69 6d 65 2c 20 73 6f 20 e at a.time, so
b360: 74 68 61 74 20 69 6e 20 74 79 70 69 63 61 6c 20 that in typical
b370: 66 6f 72 6d 61 74 74 65 72 73 20 73 75 63 68 20 formatters such
b380: 61 73 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 as <code class=s
b390: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
b3a0: 73 3d 76 61 72 69 61 62 6c 65 3e 63 6f 6c 75 6d s=variable>colum
b3b0: 6e 61 72 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 nar</span></code
b3c0: 3e 20 6f 6e 6c 79 20 63 6f 6e 73 74 61 6e 74 0a > only constant.
b3d0: 6d 65 6d 6f 72 79 20 69 73 20 63 6f 6e 73 75 6d memory is consum
b3e0: 65 64 2c 20 6d 61 6b 69 6e 67 20 74 68 69 73 20 ed, making this
b3f0: 73 75 69 74 61 62 6c 65 20 66 6f 72 20 66 6f 72 suitable for for
b400: 6d 61 74 74 69 6e 67 20 66 69 6c 65 73 20 6f 66 matting files of
b410: 0a 61 72 62 69 74 72 61 72 79 20 73 69 7a 65 2e .arbitrary size.
b420: 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 6c 69 6e 65 2d .<p>..<h3>(line-
b430: 6e 75 6d 62 65 72 73 20 5b 26 6c 74 3b 73 74 61 numbers [<sta
b440: 72 74 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a 41 rt>])</h3>..A
b450: 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20 75 74 69 convenience uti
b460: 6c 69 74 79 2c 20 6a 75 73 74 20 66 6f 72 6d 61 lity, just forma
b470: 74 73 20 61 6e 20 69 6e 66 69 6e 69 74 65 20 73 ts an infinite s
b480: 74 72 65 61 6d 20 6f 66 20 6e 75 6d 62 65 72 73 tream of numbers
b490: 20 28 69 6e 0a 74 68 65 20 63 75 72 72 65 6e 74 (in.the current
b4a0: 20 72 61 64 69 78 29 20 62 65 67 69 6e 6e 69 6e radix) beginnin
b4b0: 67 20 77 69 74 68 20 3c 63 6f 64 65 20 63 6c 61 g with <code cla
b4c0: 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 ss=scheme><span
b4d0: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 class=variable>&
b4e0: 6c 74 3b 73 74 61 72 74 26 67 74 3b 3c 2f 73 70 lt;start></sp
b4f0: 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 77 68 69 63 an></code>, whic
b500: 68 20 64 65 66 61 75 6c 74 73 20 74 6f 20 3c 63 h defaults to <c
b510: 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
b520: 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 6d ><span class=num
b530: 62 65 72 3e 31 3c 2f 73 70 61 6e 3e 3c 2f 63 6f ber>1</span></co
b540: 64 65 3e 2e 0a 3c 70 3e 0a 0a 54 68 65 20 55 6e de>..<p>..The Un
b550: 69 78 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 ix <code class=s
b560: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
b570: 73 3d 76 61 72 69 61 62 6c 65 3e 6e 6c 3c 2f 73 s=variable>nl</s
b580: 70 61 6e 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 pan>(<span class
b590: 3d 6e 75 6d 62 65 72 3e 31 3c 2f 73 70 61 6e 3e =number>1</span>
b5a0: 29 3c 2f 63 6f 64 65 3e 20 75 74 69 6c 69 74 79 )</code> utility
b5b0: 20 63 6f 75 6c 64 20 62 65 20 69 6d 70 6c 65 6d could be implem
b5c0: 65 6e 74 65 64 20 61 73 3a 0a 3c 70 3e 0a 0a 3c ented as:.<p>..<
b5d0: 70 72 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 pre class=scheme
b5e0: 3e 0a 20 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 >. (<span class
b5f0: 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 =variable>fmt</s
b600: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
b610: 3d 62 6f 6f 6c 65 61 6e 3e 23 74 3c 2f 73 70 61 =boolean>#t</spa
b620: 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d n> (<span class=
b630: 76 61 72 69 61 62 6c 65 3e 63 6f 6c 75 6d 6e 61 variable>columna
b640: 72 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 r</span> <span c
b650: 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 36 3c 2f 73 lass=number>6</s
b660: 70 61 6e 3e 20 27 3c 73 70 61 6e 20 63 6c 61 73 pan> '<span clas
b670: 73 3d 76 61 72 69 61 62 6c 65 3e 72 69 67 68 74 s=variable>right
b680: 3c 2f 73 70 61 6e 3e 20 27 3c 73 70 61 6e 20 63 </span> '<span c
b690: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 69 6e lass=variable>in
b6a0: 66 69 6e 69 74 65 3c 2f 73 70 61 6e 3e 20 28 3c finite</span> (<
b6b0: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
b6c0: 62 6c 65 3e 6c 69 6e 65 2d 6e 75 6d 62 65 72 73 ble>line-numbers
b6d0: 3c 2f 73 70 61 6e 3e 29 0a 20 20 20 20 20 20 20 </span>).
b6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 <sp
b6f0: 61 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e an class=string>
b700: 26 71 75 6f 74 3b 20 26 71 75 6f 74 3b 3c 2f 73 " "</s
b710: 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 pan> (<span clas
b720: 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 2d 66 s=variable>fmt-f
b730: 69 6c 65 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e ile</span> <span
b740: 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 class=string>&q
b750: 75 6f 74 3b 72 65 61 64 2d 6c 69 6e 65 2e 73 63 uot;read-line.sc
b760: 6d 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 29 29 m"</span>))
b770: 29 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 0a 3c 70 ).</pre>.<p>..<p
b780: 72 65 3e 0a 20 20 20 20 20 31 20 0a 20 20 20 20 re>. 1 .
b790: 20 32 20 28 64 65 66 69 6e 65 20 28 72 65 61 64 2 (define (read
b7a0: 2d 6c 69 6e 65 20 2e 20 6f 29 0a 20 20 20 20 20 -line . o).
b7b0: 33 20 20 20 28 6c 65 74 20 28 28 70 6f 72 74 20 3 (let ((port
b7c0: 28 69 66 20 28 70 61 69 72 3f 20 6f 29 20 28 63 (if (pair? o) (c
b7d0: 61 72 20 6f 29 20 28 63 75 72 72 65 6e 74 2d 69 ar o) (current-i
b7e0: 6e 70 75 74 2d 70 6f 72 74 29 29 29 29 0a 20 20 nput-port)))).
b7f0: 20 20 20 34 20 20 20 20 20 28 6c 65 74 20 6c 70 4 (let lp
b800: 20 28 28 72 65 73 20 27 28 29 29 29 0a 20 20 20 ((res '())).
b810: 20 20 35 20 20 20 20 20 20 20 28 6c 65 74 20 28 5 (let (
b820: 28 63 20 28 72 65 61 64 2d 63 68 61 72 20 70 6f (c (read-char po
b830: 72 74 29 29 29 0a 20 20 20 20 20 36 20 20 20 20 rt))). 6
b840: 20 20 20 20 20 28 69 66 20 28 6f 72 20 28 65 6f (if (or (eo
b850: 66 2d 6f 62 6a 65 63 74 3f 20 63 29 20 28 65 71 f-object? c) (eq
b860: 76 3f 20 63 20 23 5c 6e 65 77 6c 69 6e 65 29 29 v? c #\newline))
b870: 0a 20 20 20 20 20 37 20 20 20 20 20 20 20 20 20 . 7
b880: 20 20 20 20 28 6c 69 73 74 2d 26 67 74 3b 73 74 (list->st
b890: 72 69 6e 67 20 28 72 65 76 65 72 73 65 20 72 65 ring (reverse re
b8a0: 73 29 29 0a 20 20 20 20 20 38 20 20 20 20 20 20 s)). 8
b8b0: 20 20 20 20 20 20 20 28 6c 70 20 28 63 6f 6e 73 (lp (cons
b8c0: 20 63 20 72 65 73 29 29 29 29 29 29 29 0a 3c 2f c res))))))).</
b8d0: 70 72 65 3e 0a 3c 70 3e 0a 0a 3c 61 20 6e 61 6d pre>.<p>..<a nam
b8e0: 65 3d 22 53 45 43 54 49 4f 4e 5f 36 22 3e 3c 68 e="SECTION_6"><h
b8f0: 31 3e 36 26 6e 62 73 70 3b 26 6e 62 73 70 3b 43 1>6 C
b900: 20 46 6f 72 6d 61 74 74 69 6e 67 3c 2f 68 31 3e Formatting</h1>
b910: 0a 0a 3c 61 20 6e 61 6d 65 3d 22 53 45 43 54 49 ..<a name="SECTI
b920: 4f 4e 5f 36 2e 31 22 3e 3c 68 32 3e 36 2e 31 26 ON_6.1"><h2>6.1&
b930: 6e 62 73 70 3b 26 6e 62 73 70 3b 43 20 46 6f 72 nbsp; C For
b940: 6d 61 74 74 69 6e 67 20 42 61 73 69 63 73 3c 2f matting Basics</
b950: 68 32 3e 0a 0a 46 6f 72 20 70 75 72 70 6f 73 65 h2>..For purpose
b960: 73 20 73 75 63 68 20 61 73 20 77 72 69 74 69 6e s such as writin
b970: 67 20 77 72 61 70 70 65 72 73 2c 20 63 6f 64 65 g wrappers, code
b980: 2d 67 65 6e 65 72 61 74 6f 72 73 2c 20 63 6f 6d -generators, com
b990: 70 69 6c 65 72 73 20 6f 72 0a 6f 74 68 65 72 20 pilers or.other
b9a0: 6c 61 6e 67 75 61 67 65 20 74 6f 6f 6c 73 2c 20 language tools,
b9b0: 70 65 6f 70 6c 65 20 6f 66 74 65 6e 20 6e 65 65 people often nee
b9c0: 64 20 74 6f 20 67 65 6e 65 72 61 74 65 20 6f 72 d to generate or
b9d0: 20 65 6d 69 74 20 43 20 63 6f 64 65 2e 0a 57 69 emit C code..Wi
b9e0: 74 68 6f 75 74 20 61 20 64 65 63 65 6e 74 20 6c thout a decent l
b9f0: 69 62 72 61 72 79 20 66 72 61 6d 65 77 6f 72 6b ibrary framework
ba00: 20 69 74 27 73 20 64 69 66 66 69 63 75 6c 74 20 it's difficult
ba10: 74 6f 20 6d 61 69 6e 74 61 69 6e 20 70 72 6f 70 to maintain prop
ba20: 65 72 0a 69 6e 64 65 6e 74 61 74 69 6f 6e 2e 20 er.indentation.
ba30: 20 49 6e 20 61 64 64 69 74 69 6f 6e 2c 20 66 6f In addition, fo
ba40: 72 20 74 68 65 20 53 63 68 65 6d 65 20 70 72 6f r the Scheme pro
ba50: 67 72 61 6d 6d 65 72 20 69 74 27 73 20 74 65 64 grammer it's ted
ba60: 69 6f 75 73 20 74 6f 0a 77 6f 72 6b 20 77 69 74 ious to.work wit
ba70: 68 20 61 6c 6c 20 74 68 65 20 63 6f 6e 74 65 78 h all the contex
ba80: 74 20 73 65 6e 73 69 74 69 76 69 74 69 65 73 20 t sensitivities
ba90: 6f 66 20 43 2c 20 73 75 63 68 20 61 73 20 74 68 of C, such as th
baa0: 65 20 65 78 70 72 65 73 73 69 6f 6e 0a 76 73 2e e expression.vs.
bab0: 20 73 74 61 74 65 6d 65 6e 74 20 64 69 73 74 69 statement disti
bac0: 6e 63 74 69 6f 6e 2c 20 73 70 65 63 69 61 6c 20 nction, special
bad0: 72 75 6c 65 73 20 66 6f 72 20 77 72 69 74 69 6e rules for writin
bae0: 67 20 70 72 65 70 72 6f 63 65 73 73 6f 72 0a 6d g preprocessor.m
baf0: 61 63 72 6f 73 2c 20 61 6e 64 20 77 68 65 6e 20 acros, and when
bb00: 70 72 65 63 65 64 65 6e 63 65 20 72 75 6c 65 73 precedence rules
bb10: 20 72 65 71 75 69 72 65 20 70 61 72 65 6e 74 68 require parenth
bb20: 65 73 69 73 2e 20 20 46 6f 72 74 75 6e 61 74 65 esis. Fortunate
bb30: 6c 79 2c 0a 63 6f 6e 74 65 78 74 20 69 73 20 6f ly,.context is o
bb40: 6e 65 20 74 68 69 6e 67 20 74 68 69 73 20 66 6f ne thing this fo
bb50: 72 6d 61 74 74 69 6e 67 20 6c 69 62 72 61 72 79 rmatting library
bb60: 20 69 73 20 67 6f 6f 64 20 61 74 20 6b 65 65 70 is good at keep
bb70: 69 6e 67 0a 74 72 61 63 6b 20 6f 66 2e 20 20 54 ing.track of. T
bb80: 68 65 20 43 20 66 6f 72 6d 61 74 74 69 6e 67 20 he C formatting
bb90: 69 6e 74 65 72 66 61 63 65 20 74 72 69 65 73 20 interface tries
bba0: 74 6f 20 6d 61 6b 65 20 69 74 20 61 73 20 65 61 to make it as ea
bbb0: 73 79 20 61 73 0a 70 6f 73 73 69 62 6c 65 20 74 sy as.possible t
bbc0: 6f 20 67 65 6e 65 72 61 74 65 20 43 20 63 6f 64 o generate C cod
bbd0: 65 20 77 69 74 68 6f 75 74 20 67 65 74 74 69 6e e without gettin
bbe0: 67 20 69 6e 20 79 6f 75 72 20 77 61 79 2e 0a 3c g in your way..<
bbf0: 70 3e 0a 0a 54 68 65 72 65 20 61 72 65 20 74 77 p>..There are tw
bc00: 6f 20 61 70 70 72 6f 61 63 68 65 73 20 74 6f 20 o approaches to
bc10: 75 73 69 6e 67 20 74 68 65 20 43 20 66 6f 72 6d using the C form
bc20: 61 74 74 69 6e 67 20 65 78 74 65 6e 73 69 6f 6e atting extension
bc30: 73 20 2d 0a 70 72 6f 63 65 64 75 72 61 6c 20 61 s -.procedural a
bc40: 6e 64 20 73 65 78 70 2d 6f 72 69 65 6e 74 65 64 nd sexp-oriented
bc50: 20 28 64 65 73 63 72 69 62 65 64 20 69 6e 20 3c (described in <
bc60: 61 20 68 72 65 66 3d 22 23 53 45 43 54 49 4f 4e a href="#SECTION
bc70: 5f 36 2e 37 22 3e 36 2e 37 3c 2f 61 3e 29 2e 20 _6.7">6.7</a>).
bc80: 20 49 6e 20 74 68 65 0a 70 72 6f 63 65 64 75 72 In the.procedur
bc90: 61 6c 20 69 6e 74 65 72 66 61 63 65 2c 20 43 20 al interface, C
bca0: 6f 70 65 72 61 74 6f 72 73 20 61 72 65 20 6d 61 operators are ma
bcb0: 64 65 20 61 76 61 69 6c 61 62 6c 65 20 61 73 20 de available as
bcc0: 66 6f 72 6d 61 74 74 65 72 73 0a 77 69 74 68 20 formatters.with
bcd0: 61 20 26 71 75 6f 74 3b 63 2d 26 71 75 6f 74 3b a "c-"
bce0: 20 70 72 65 66 69 78 2c 20 6c 69 74 65 72 61 6c prefix, literal
bcf0: 73 20 61 72 65 20 63 6f 6e 76 65 72 74 65 64 20 s are converted
bd00: 74 6f 20 74 68 65 69 72 20 43 20 65 71 75 69 76 to their C equiv
bd10: 61 6c 65 6e 74 73 20 61 6e 64 0a 73 79 6d 62 6f alents and.symbo
bd20: 6c 73 20 61 72 65 20 6f 75 74 70 75 74 20 61 73 ls are output as
bd30: 2d 69 73 20 28 79 6f 75 27 72 65 20 72 65 73 70 -is (you're resp
bd40: 6f 6e 73 69 62 6c 65 20 66 6f 72 20 6d 61 6b 69 onsible for maki
bd50: 6e 67 20 73 75 72 65 20 74 68 65 79 20 61 72 65 ng sure they are
bd60: 0a 76 61 6c 69 64 20 43 20 69 64 65 6e 74 69 66 .valid C identif
bd70: 69 65 72 73 29 2e 20 20 49 6e 64 65 6e 74 61 74 iers). Indentat
bd80: 69 6f 6e 20 69 73 20 68 61 6e 64 6c 65 64 20 61 ion is handled a
bd90: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 3c 70 utomatically..<p
bda0: 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 >..<code class=s
bdb0: 63 68 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c 61 cheme>(<span cla
bdc0: 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 3c ss=variable>fmt<
bdd0: 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
bde0: 73 73 3d 62 6f 6f 6c 65 61 6e 3e 23 74 3c 2f 73 ss=boolean>#t</s
bdf0: 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 pan> (<span clas
be00: 73 3d 76 61 72 69 61 62 6c 65 3e 63 2d 69 66 3c s=variable>c-if<
be10: 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
be20: 73 73 3d 6e 75 6d 62 65 72 3e 31 3c 2f 73 70 61 ss=number>1</spa
be30: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e n> <span class=n
be40: 75 6d 62 65 72 3e 32 3c 2f 73 70 61 6e 3e 20 3c umber>2</span> <
be50: 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 span class=numbe
be60: 72 3e 33 3c 2f 73 70 61 6e 3e 29 29 3c 2f 63 6f r>3</span>))</co
be70: 64 65 3e 0a 3c 70 3e 0a 0a 6f 75 74 70 75 74 73 de>.<p>..outputs
be80: 0a 3c 70 3e 0a 0a 3c 70 72 65 3e 0a 20 20 69 66 .<p>..<pre>. if
be90: 20 28 31 29 20 7b 0a 20 20 20 20 20 20 32 3b 0a (1) {. 2;.
bea0: 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 } else {.
beb0: 20 33 3b 0a 20 20 7d 0a 3c 2f 70 72 65 3e 0a 3c 3;. }.</pre>.<
bec0: 70 3e 0a 0a 49 6e 20 61 64 64 69 74 69 6f 6e 2c p>..In addition,
bed0: 20 74 68 65 20 66 6f 72 6d 61 74 74 65 72 20 6b the formatter k
bee0: 6e 6f 77 73 20 77 68 65 6e 20 79 6f 75 27 72 65 nows when you're
bef0: 20 69 6e 20 61 6e 20 65 78 70 72 65 73 73 69 6f in an expressio
bf00: 6e 20 61 6e 64 0a 77 68 65 6e 20 79 6f 75 27 72 n and.when you'r
bf10: 65 20 69 6e 20 61 20 73 74 61 74 65 6d 65 6e 74 e in a statement
bf20: 2c 20 61 6e 64 20 62 65 68 61 76 65 73 20 61 63 , and behaves ac
bf30: 63 6f 72 64 69 6e 67 6c 79 2c 20 73 6f 20 74 68 cordingly, so th
bf40: 61 74 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c at.<p>..<code cl
bf50: 61 73 73 3d 73 63 68 65 6d 65 3e 28 3c 73 70 61 ass=scheme>(<spa
bf60: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
bf70: 3e 66 6d 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 >fmt</span> <spa
bf80: 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c 65 61 6e 3e n class=boolean>
bf90: 23 74 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e #t</span> (<span
bfa0: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
bfb0: 63 2d 69 66 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 c-if</span> (<sp
bfc0: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
bfd0: 65 3e 63 2d 69 66 3c 2f 73 70 61 6e 3e 20 3c 73 e>c-if</span> <s
bfe0: 70 61 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 pan class=number
bff0: 3e 31 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 >1</span> <span
c000: 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 32 3c 2f class=number>2</
c010: 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 span> <span clas
c020: 73 3d 6e 75 6d 62 65 72 3e 33 3c 2f 73 70 61 6e s=number>3</span
c030: 3e 29 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e >) <span class=n
c040: 75 6d 62 65 72 3e 34 3c 2f 73 70 61 6e 3e 20 3c umber>4</span> <
c050: 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 span class=numbe
c060: 72 3e 35 3c 2f 73 70 61 6e 3e 29 29 3c 2f 63 6f r>5</span>))</co
c070: 64 65 3e 0a 3c 70 3e 0a 0a 6f 75 74 70 75 74 73 de>.<p>..outputs
c080: 0a 3c 70 3e 0a 0a 3c 70 72 65 3e 0a 20 20 69 66 .<p>..<pre>. if
c090: 20 28 31 20 3f 20 32 20 3a 20 33 29 20 7b 0a 20 (1 ? 2 : 3) {.
c0a0: 20 20 20 20 20 34 3b 0a 20 20 7d 20 65 6c 73 65 4;. } else
c0b0: 20 7b 0a 20 20 20 20 20 20 35 3b 0a 20 20 7d 0a {. 5;. }.
c0c0: 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 0a 53 69 6d 69 </pre>.<p>..Simi
c0d0: 6c 61 72 79 2c 20 3c 63 6f 64 65 20 63 6c 61 73 lary, <code clas
c0e0: 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 s=scheme><span c
c0f0: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 2d lass=variable>c-
c100: 62 65 67 69 6e 3c 2f 73 70 61 6e 3e 3c 2f 63 6f begin</span></co
c110: 64 65 3e 2c 20 75 73 65 64 20 66 6f 72 20 73 65 de>, used for se
c120: 71 75 65 6e 63 69 6e 67 2c 20 77 69 6c 6c 20 73 quencing, will s
c130: 65 70 61 72 61 74 65 20 77 69 74 68 0a 73 65 6d eparate with.sem
c140: 69 2d 63 6f 6c 6f 6e 73 20 69 6e 20 61 20 73 74 i-colons in a st
c150: 61 74 65 6d 65 6e 74 20 61 6e 64 20 63 6f 6d 6d atement and comm
c160: 61 73 20 69 6e 20 61 6e 20 65 78 70 72 65 73 73 as in an express
c170: 69 6f 6e 2e 0a 3c 70 3e 0a 0a 4d 6f 72 65 6f 76 ion..<p>..Moreov
c180: 65 72 2c 20 77 65 20 61 6c 73 6f 20 6b 65 65 70 er, we also keep
c190: 20 74 72 61 63 6b 20 6f 66 20 74 68 65 20 66 69 track of the fi
c1a0: 6e 61 6c 20 65 78 70 72 65 73 73 69 6f 6e 20 69 nal expression i
c1b0: 6e 20 61 20 66 75 6e 63 74 69 6f 6e 0a 61 6e 64 n a function.and
c1c0: 20 69 6e 73 65 72 74 20 72 65 74 75 72 6e 73 20 insert returns
c1d0: 66 6f 72 20 79 6f 75 3a 0a 3c 70 3e 0a 0a 3c 63 for you:.<p>..<c
c1e0: 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
c1f0: 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 >(<span class=va
c200: 72 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 70 61 6e riable>fmt</span
c210: 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 62 6f > <span class=bo
c220: 6f 6c 65 61 6e 3e 23 74 3c 2f 73 70 61 6e 3e 20 olean>#t</span>
c230: 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 (<span class=var
c240: 69 61 62 6c 65 3e 63 2d 66 75 6e 3c 2f 73 70 61 iable>c-fun</spa
c250: 6e 3e 20 27 3c 73 70 61 6e 20 63 6c 61 73 73 3d n> '<span class=
c260: 76 61 72 69 61 62 6c 65 3e 69 6e 74 3c 2f 73 70 variable>int</sp
c270: 61 6e 3e 20 27 3c 73 70 61 6e 20 63 6c 61 73 73 an> '<span class
c280: 3d 76 61 72 69 61 62 6c 65 3e 66 6f 6f 3c 2f 73 =variable>foo</s
c290: 70 61 6e 3e 20 27 28 29 20 28 3c 73 70 61 6e 20 pan> '() (<span
c2a0: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 class=variable>c
c2b0: 2d 69 66 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 -if</span> (<spa
c2c0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
c2d0: 3e 63 2d 69 66 3c 2f 73 70 61 6e 3e 20 3c 73 70 >c-if</span> <sp
c2e0: 61 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e an class=number>
c2f0: 31 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 1</span> <span c
c300: 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 32 3c 2f 73 lass=number>2</s
c310: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
c320: 3d 6e 75 6d 62 65 72 3e 33 3c 2f 73 70 61 6e 3e =number>3</span>
c330: 29 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 ) <span class=nu
c340: 6d 62 65 72 3e 34 3c 2f 73 70 61 6e 3e 20 3c 73 mber>4</span> <s
c350: 70 61 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 pan class=number
c360: 3e 35 3c 2f 73 70 61 6e 3e 29 29 29 3c 2f 63 6f >5</span>)))</co
c370: 64 65 3e 0a 3c 70 3e 0a 0a 6f 75 74 70 75 74 73 de>.<p>..outputs
c380: 0a 3c 70 3e 0a 0a 3c 70 72 65 3e 0a 20 20 69 6e .<p>..<pre>. in
c390: 74 20 66 6f 6f 20 28 29 20 7b 0a 20 20 20 20 20 t foo () {.
c3a0: 20 69 66 20 28 31 20 3f 20 32 20 3a 20 33 29 20 if (1 ? 2 : 3)
c3b0: 7b 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 {. retu
c3c0: 72 6e 20 34 3b 0a 20 20 20 20 20 20 7d 20 65 6c rn 4;. } el
c3d0: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 72 se {. r
c3e0: 65 74 75 72 6e 20 35 3b 0a 20 20 20 20 20 20 7d eturn 5;. }
c3f0: 0a 20 20 7d 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a . }.</pre>.<p>.
c400: 0a 61 6c 74 68 6f 75 67 68 20 69 74 20 6b 6e 6f .although it kno
c410: 77 73 20 74 68 61 74 20 76 6f 69 64 20 66 75 6e ws that void fun
c420: 63 74 69 6f 6e 73 20 64 6f 6e 27 74 20 72 65 74 ctions don't ret
c430: 75 72 6e 2e 0a 3c 70 3e 0a 0a 53 77 69 74 63 68 urn..<p>..Switch
c440: 20 73 74 61 74 65 6d 65 6e 74 73 20 69 6e 73 65 statements inse
c450: 72 74 20 62 72 65 61 6b 73 20 62 79 20 64 65 66 rt breaks by def
c460: 61 75 6c 74 20 69 66 20 74 68 65 79 20 64 6f 6e ault if they don
c470: 27 74 20 72 65 74 75 72 6e 3a 0a 3c 70 3e 0a 0a 't return:.<p>..
c480: 3c 70 72 65 20 63 6c 61 73 73 3d 73 63 68 65 6d <pre class=schem
c490: 65 3e 0a 20 20 28 3c 73 70 61 6e 20 63 6c 61 73 e>. (<span clas
c4a0: 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 3c 2f s=variable>fmt</
c4b0: 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 span> <span clas
c4c0: 73 3d 62 6f 6f 6c 65 61 6e 3e 23 74 3c 2f 73 70 s=boolean>#t</sp
c4d0: 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 an> (<span class
c4e0: 3d 76 61 72 69 61 62 6c 65 3e 63 2d 73 77 69 74 =variable>c-swit
c4f0: 63 68 3c 2f 73 70 61 6e 3e 20 27 3c 73 70 61 6e ch</span> '<span
c500: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
c510: 79 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20 20 20 y</span>.
c520: 20 20 20 20 20 28 3c 73 70 61 6e 20 63 6c 61 73 (<span clas
c530: 73 3d 76 61 72 69 61 62 6c 65 3e 63 2d 63 61 73 s=variable>c-cas
c540: 65 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 e</span> <span c
c550: 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 31 3c 2f 73 lass=number>1</s
c560: 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 pan> (<span clas
c570: 73 3d 76 61 72 69 61 62 6c 65 3e 63 2b 3d 3c 2f s=variable>c+=</
c580: 73 70 61 6e 3e 20 27 3c 73 70 61 6e 20 63 6c 61 span> '<span cla
c590: 73 73 3d 76 61 72 69 61 62 6c 65 3e 78 3c 2f 73 ss=variable>x</s
c5a0: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
c5b0: 3d 6e 75 6d 62 65 72 3e 31 3c 2f 73 70 61 6e 3e =number>1</span>
c5c0: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 )). (
c5d0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
c5e0: 61 62 6c 65 3e 63 2d 64 65 66 61 75 6c 74 3c 2f able>c-default</
c5f0: 73 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 span> (<span cla
c600: 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 2b 3d 3c ss=variable>c+=<
c610: 2f 73 70 61 6e 3e 20 27 3c 73 70 61 6e 20 63 6c /span> '<span cl
c620: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 78 3c 2f ass=variable>x</
c630: 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 span> <span clas
c640: 73 3d 6e 75 6d 62 65 72 3e 32 3c 2f 73 70 61 6e s=number>2</span
c650: 3e 29 29 29 29 0a 3c 2f 70 72 65 3e 0a 3c 70 3e >)))).</pre>.<p>
c660: 0a 0a 3c 70 72 65 3e 0a 20 20 73 77 69 74 63 68 ..<pre>. switch
c670: 20 28 79 29 20 7b 0a 20 20 20 20 20 20 63 61 73 (y) {. cas
c680: 65 20 31 3a 0a 20 20 20 20 20 20 20 20 20 20 78 e 1:. x
c690: 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20 += 1;.
c6a0: 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 64 65 break;. de
c6b0: 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 fault:.
c6c0: 20 78 20 2b 3d 20 32 3b 0a 20 20 20 20 20 20 20 x += 2;.
c6d0: 20 20 20 62 72 65 61 6b 3b 0a 20 20 7d 0a 3c 2f break;. }.</
c6e0: 70 72 65 3e 0a 3c 70 3e 0a 0a 74 68 6f 75 67 68 pre>.<p>..though
c6f0: 20 79 6f 75 20 63 61 6e 20 65 78 70 6c 69 63 69 you can explici
c700: 74 6c 79 20 66 61 6c 6c 74 68 72 6f 75 67 68 20 tly fallthrough
c710: 69 66 20 79 6f 75 20 77 61 6e 74 3a 0a 3c 70 3e if you want:.<p>
c720: 0a 0a 3c 70 72 65 20 63 6c 61 73 73 3d 73 63 68 ..<pre class=sch
c730: 65 6d 65 3e 0a 20 20 28 3c 73 70 61 6e 20 63 6c eme>. (<span cl
c740: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 ass=variable>fmt
c750: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
c760: 61 73 73 3d 62 6f 6f 6c 65 61 6e 3e 23 74 3c 2f ass=boolean>#t</
c770: 73 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 span> (<span cla
c780: 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 2d 73 77 ss=variable>c-sw
c790: 69 74 63 68 3c 2f 73 70 61 6e 3e 20 27 3c 73 70 itch</span> '<sp
c7a0: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
c7b0: 65 3e 79 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20 e>y</span>.
c7c0: 20 20 20 20 20 20 20 28 3c 73 70 61 6e 20 63 6c (<span cl
c7d0: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 2d 63 ass=variable>c-c
c7e0: 61 73 65 2f 66 61 6c 6c 74 68 72 6f 75 67 68 3c ase/fallthrough<
c7f0: 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
c800: 73 73 3d 6e 75 6d 62 65 72 3e 31 3c 2f 73 70 61 ss=number>1</spa
c810: 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d n> (<span class=
c820: 76 61 72 69 61 62 6c 65 3e 63 2b 3d 3c 2f 73 70 variable>c+=</sp
c830: 61 6e 3e 20 27 3c 73 70 61 6e 20 63 6c 61 73 73 an> '<span class
c840: 3d 76 61 72 69 61 62 6c 65 3e 78 3c 2f 73 70 61 =variable>x</spa
c850: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e n> <span class=n
c860: 75 6d 62 65 72 3e 31 3c 2f 73 70 61 6e 3e 29 29 umber>1</span>))
c870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 3c 73 . (<s
c880: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
c890: 6c 65 3e 63 2d 64 65 66 61 75 6c 74 3c 2f 73 70 le>c-default</sp
c8a0: 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 an> (<span class
c8b0: 3d 76 61 72 69 61 62 6c 65 3e 63 2b 3d 3c 2f 73 =variable>c+=</s
c8c0: 70 61 6e 3e 20 27 3c 73 70 61 6e 20 63 6c 61 73 pan> '<span clas
c8d0: 73 3d 76 61 72 69 61 62 6c 65 3e 78 3c 2f 73 70 s=variable>x</sp
c8e0: 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
c8f0: 6e 75 6d 62 65 72 3e 32 3c 2f 73 70 61 6e 3e 29 number>2</span>)
c900: 29 29 29 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 0a ))).</pre>.<p>..
c910: 3c 70 72 65 3e 0a 20 20 73 77 69 74 63 68 20 28 <pre>. switch (
c920: 79 29 20 7b 0a 20 20 20 20 20 20 63 61 73 65 20 y) {. case
c930: 31 3a 0a 20 20 20 20 20 20 20 20 20 20 78 20 2b 1:. x +
c940: 3d 20 31 3b 0a 20 20 20 20 20 20 64 65 66 61 75 = 1;. defau
c950: 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 20 78 20 lt:. x
c960: 2b 3d 20 32 3b 0a 20 20 20 20 20 20 20 20 20 20 += 2;.
c970: 62 72 65 61 6b 3b 0a 20 20 7d 0a 3c 2f 70 72 65 break;. }.</pre
c980: 3e 0a 3c 70 3e 0a 0a 4f 70 65 72 61 74 6f 72 73 >.<p>..Operators
c990: 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 77 are available w
c9a0: 69 74 68 20 6a 75 73 74 20 61 20 26 71 75 6f 74 ith just a "
c9b0: 3b 63 26 71 75 6f 74 3b 20 70 72 65 66 69 78 2c ;c" prefix,
c9c0: 20 65 2e 67 2e 20 63 2b 2c 20 63 2d 2c 20 63 2a e.g. c+, c-, c*
c9d0: 2c 20 63 2f 2c 0a 65 74 63 2e 20 20 3c 63 6f 64 , c/,.etc. <cod
c9e0: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c e class=scheme><
c9f0: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
ca00: 62 6c 65 3e 63 2b 2b 3c 2f 73 70 61 6e 3e 3c 2f ble>c++</span></
ca10: 63 6f 64 65 3e 20 69 73 20 61 20 70 72 65 66 69 code> is a prefi
ca20: 78 20 6f 70 65 72 61 74 6f 72 2c 20 3c 63 6f 64 x operator, <cod
ca30: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c e class=scheme><
ca40: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
ca50: 62 6c 65 3e 63 2b 2b 2f 70 6f 73 74 3c 2f 73 70 ble>c++/post</sp
ca60: 61 6e 3e 3c 2f 63 6f 64 65 3e 20 69 73 20 70 6f an></code> is po
ca70: 73 74 66 69 78 2e 20 20 7c 7c 2c 20 7c 20 61 6e stfix. ||, | an
ca80: 64 0a 7c 3d 20 61 72 65 20 77 72 69 74 74 65 6e d.|= are written
ca90: 20 61 73 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d as <code class=
caa0: 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 scheme><span cla
cab0: 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 2d 6f 72 ss=variable>c-or
cac0: 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 </span></code>,
cad0: 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
cae0: 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 me><span class=v
caf0: 61 72 69 61 62 6c 65 3e 63 2d 62 69 74 2d 6f 72 ariable>c-bit-or
cb00: 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 61 </span></code> a
cb10: 6e 64 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 nd <code class=s
cb20: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
cb30: 73 3d 76 61 72 69 61 62 6c 65 3e 63 2d 62 69 74 s=variable>c-bit
cb40: 2d 6f 72 3d 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 -or=</span></cod
cb50: 65 3e 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e e> respectively.
cb60: 0a 3c 70 3e 0a 0a 46 75 6e 63 74 69 6f 6e 20 61 .<p>..Function a
cb70: 70 70 6c 69 63 61 74 69 6f 6e 73 20 61 72 65 20 pplications are
cb80: 77 72 69 74 74 65 6e 20 77 69 74 68 20 3c 63 6f written with <co
cb90: 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
cba0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
cbb0: 61 62 6c 65 3e 63 2d 61 70 70 6c 79 3c 2f 73 70 able>c-apply</sp
cbc0: 61 6e 3e 3c 2f 63 6f 64 65 3e 2e 20 20 4f 74 68 an></code>. Oth
cbd0: 65 72 20 63 6f 6e 74 72 6f 6c 0a 73 74 72 75 63 er control.struc
cbe0: 74 75 72 65 73 20 73 75 63 68 20 61 73 20 3c 63 tures such as <c
cbf0: 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
cc00: 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 ><span class=var
cc10: 69 61 62 6c 65 3e 63 2d 66 6f 72 3c 2f 73 70 61 iable>c-for</spa
cc20: 6e 3e 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 3c 63 n></code> and <c
cc30: 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
cc40: 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 ><span class=var
cc50: 69 61 62 6c 65 3e 63 2d 77 68 69 6c 65 3c 2f 73 iable>c-while</s
cc60: 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 77 6f 72 6b pan></code> work
cc70: 20 61 73 20 65 78 70 65 63 74 65 64 2e 20 20 54 as expected. T
cc80: 68 65 20 66 75 6c 6c 0a 6c 69 73 74 20 69 73 20 he full.list is
cc90: 69 6e 20 74 68 65 20 70 72 6f 63 65 64 75 72 65 in the procedure
cca0: 20 69 6e 64 65 78 20 62 65 6c 6f 77 2e 0a 3c 70 index below..<p
ccb0: 3e 0a 0a 57 68 65 6e 20 61 20 43 20 66 6f 72 6d >..When a C form
ccc0: 61 74 74 65 72 20 65 6e 63 6f 75 6e 74 65 72 73 atter encounters
ccd0: 20 61 6e 20 6f 62 6a 65 63 74 20 69 74 20 64 6f an object it do
cce0: 65 73 6e 27 74 20 6b 6e 6f 77 20 68 6f 77 20 74 esn't know how t
ccf0: 6f 20 77 72 69 74 65 0a 28 69 6e 63 6c 75 64 69 o write.(includi
cd00: 6e 67 20 6c 69 73 74 73 20 61 6e 64 20 72 65 63 ng lists and rec
cd10: 6f 72 64 73 29 2c 20 69 74 20 6f 75 74 70 75 74 ords), it output
cd20: 73 20 74 68 65 6d 20 61 63 63 6f 72 64 69 6e 67 s them according
cd30: 20 74 6f 20 74 68 65 0a 66 6f 72 6d 61 74 20 73 to the.format s
cd40: 74 61 74 65 27 73 20 63 75 72 72 65 6e 74 20 3c tate's current <
cd50: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
cd60: 65 3e 27 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 e>'<span class=v
cd70: 61 72 69 61 62 6c 65 3e 67 65 6e 3c 2f 73 70 61 ariable>gen</spa
cd80: 6e 3e 3c 2f 63 6f 64 65 3e 20 76 61 72 69 61 62 n></code> variab
cd90: 6c 65 2e 20 20 54 68 69 73 20 61 6c 6c 6f 77 73 le. This allows
cda0: 20 79 6f 75 20 74 6f 20 73 70 65 63 69 66 79 0a you to specify.
cdb0: 67 65 6e 65 72 61 74 6f 72 73 20 66 6f 72 20 79 generators for y
cdc0: 6f 75 72 20 6f 77 6e 20 74 79 70 65 73 2c 20 65 our own types, e
cdd0: 2e 67 2e 20 69 66 20 79 6f 75 20 61 72 65 20 75 .g. if you are u
cde0: 73 69 6e 67 20 79 6f 75 72 20 6f 77 6e 20 41 53 sing your own AS
cdf0: 54 0a 72 65 63 6f 72 64 73 20 69 6e 20 61 20 63 T.records in a c
ce00: 6f 6d 70 69 6c 65 72 2e 0a 3c 70 3e 0a 0a 49 66 ompiler..<p>..If
ce10: 20 74 68 65 20 3c 63 6f 64 65 20 63 6c 61 73 73 the <code class
ce20: 3d 73 63 68 65 6d 65 3e 27 3c 73 70 61 6e 20 63 =scheme>'<span c
ce30: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 67 65 lass=variable>ge
ce40: 6e 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 n</span></code>
ce50: 76 61 72 69 61 62 6c 65 20 69 73 6e 27 74 20 73 variable isn't s
ce60: 65 74 20 69 74 20 64 65 66 61 75 6c 74 73 20 74 et it defaults t
ce70: 6f 20 74 68 65 20 3c 63 6f 64 65 20 63 6c 61 73 o the <code clas
ce80: 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 s=scheme><span c
ce90: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 2d lass=variable>c-
cea0: 65 78 70 72 2f 73 65 78 70 3c 2f 73 70 61 6e 3e expr/sexp</span>
ceb0: 3c 2f 63 6f 64 65 3e 0a 70 72 6f 63 65 64 75 72 </code>.procedur
cec0: 65 2c 20 77 68 69 63 68 20 66 6f 72 6d 61 74 73 e, which formats
ced0: 20 61 6e 20 73 2d 65 78 70 72 65 73 73 69 6f 6e an s-expression
cee0: 20 61 73 20 69 66 20 69 74 20 77 65 72 65 20 43 as if it were C
cef0: 20 63 6f 64 65 2e 20 20 54 68 75 73 0a 69 6e 73 code. Thus.ins
cf00: 74 65 61 64 20 6f 66 20 3c 63 6f 64 65 20 63 6c tead of <code cl
cf10: 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e ass=scheme><span
cf20: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
cf30: 63 2d 61 70 70 6c 79 3c 2f 73 70 61 6e 3e 3c 2f c-apply</span></
cf40: 63 6f 64 65 3e 20 79 6f 75 20 63 61 6e 20 6a 75 code> you can ju
cf50: 73 74 20 75 73 65 20 61 20 6c 69 73 74 2e 20 20 st use a list.
cf60: 54 68 65 20 66 75 6c 6c 20 41 50 49 20 69 73 0a The full API is.
cf70: 61 76 61 69 6c 61 62 6c 65 20 76 69 61 20 6e 6f available via no
cf80: 72 6d 61 6c 20 73 2d 65 78 70 72 65 73 73 69 6f rmal s-expressio
cf90: 6e 73 20 2d 20 66 6f 72 6d 61 74 74 65 72 73 20 ns - formatters
cfa0: 74 68 61 74 20 61 72 65 6e 27 74 20 6b 65 79 77 that aren't keyw
cfb0: 6f 72 64 73 0a 69 6e 20 43 20 61 72 65 20 70 72 ords.in C are pr
cfc0: 65 66 69 78 65 64 20 77 69 74 68 20 61 20 25 20 efixed with a %
cfd0: 6f 72 20 6f 74 68 65 72 77 69 73 65 20 6d 61 64 or otherwise mad
cfe0: 65 20 69 6e 76 61 6c 69 64 20 43 20 69 64 65 6e e invalid C iden
cff0: 74 69 66 69 65 72 73 20 73 6f 0a 74 68 61 74 20 tifiers so.that
d000: 74 68 65 79 20 63 61 6e 27 74 20 62 65 20 63 6f they can't be co
d010: 6e 66 75 73 65 64 20 77 69 74 68 20 66 75 6e 63 nfused with func
d020: 74 69 6f 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e tion application
d030: 2e 0a 3c 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 ..<p>..<a name="
d040: 53 45 43 54 49 4f 4e 5f 36 2e 32 22 3e 3c 68 32 SECTION_6.2"><h2
d050: 3e 36 2e 32 26 6e 62 73 70 3b 26 6e 62 73 70 3b >6.2
d060: 43 20 50 72 65 70 72 6f 63 65 73 73 6f 72 20 46 C Preprocessor F
d070: 6f 72 6d 61 74 74 69 6e 67 3c 2f 68 32 3e 0a 0a ormatting</h2>..
d080: 43 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20 66 C preprocessor f
d090: 6f 72 6d 61 74 74 65 72 73 20 61 6c 73 6f 20 70 ormatters also p
d0a0: 72 6f 70 65 72 6c 79 20 68 61 6e 64 6c 65 20 74 roperly handle t
d0b0: 68 65 69 72 20 73 75 72 72 6f 75 6e 64 69 6e 67 heir surrounding
d0c0: 0a 63 6f 6e 74 65 78 74 2c 20 73 6f 20 79 6f 75 .context, so you
d0d0: 20 63 61 6e 20 73 61 66 65 6c 79 20 69 6e 74 65 can safely inte
d0e0: 72 6d 69 78 20 74 68 65 6d 20 69 6e 20 74 68 65 rmix them in the
d0f0: 20 6e 6f 72 6d 61 6c 20 66 6c 6f 77 20 6f 66 20 normal flow of
d100: 43 0a 63 6f 64 65 2e 0a 3c 70 3e 0a 0a 3c 70 72 C.code..<p>..<pr
d110: 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 0a e class=scheme>.
d120: 20 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 (<span class=v
d130: 61 72 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 70 61 ariable>fmt</spa
d140: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 62 n> <span class=b
d150: 6f 6f 6c 65 61 6e 3e 23 74 3c 2f 73 70 61 6e 3e oolean>#t</span>
d160: 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 (<span class=va
d170: 72 69 61 62 6c 65 3e 63 2d 73 77 69 74 63 68 3c riable>c-switch<
d180: 2f 73 70 61 6e 3e 20 27 3c 73 70 61 6e 20 63 6c /span> '<span cl
d190: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 79 3c 2f ass=variable>y</
d1a0: 73 70 61 6e 3e 0a 20 20 20 20 20 20 20 20 20 20 span>.
d1b0: 20 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 (<span class=v
d1c0: 61 72 69 61 62 6c 65 3e 63 2d 63 61 73 65 3c 2f ariable>c-case</
d1d0: 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 span> <span clas
d1e0: 73 3d 6e 75 6d 62 65 72 3e 31 3c 2f 73 70 61 6e s=number>1</span
d1f0: 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 > (<span class=v
d200: 61 72 69 61 62 6c 65 3e 63 3d 3c 2f 73 70 61 6e ariable>c=</span
d210: 3e 20 27 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 > '<span class=v
d220: 61 72 69 61 62 6c 65 3e 78 3c 2f 73 70 61 6e 3e ariable>x</span>
d230: 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 6d <span class=num
d240: 62 65 72 3e 31 3c 2f 73 70 61 6e 3e 29 29 0a 20 ber>1</span>)).
d250: 20 20 20 20 20 20 20 20 20 20 20 28 3c 73 70 61 (<spa
d260: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
d270: 3e 63 70 70 2d 69 66 64 65 66 3c 2f 73 70 61 6e >cpp-ifdef</span
d280: 3e 20 27 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 > '<span class=v
d290: 61 72 69 61 62 6c 65 3e 48 5f 54 57 4f 3c 2f 73 ariable>H_TWO</s
d2a0: 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 pan> (<span clas
d2b0: 73 3d 76 61 72 69 61 62 6c 65 3e 63 2d 63 61 73 s=variable>c-cas
d2c0: 65 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 e</span> <span c
d2d0: 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 32 3c 2f 73 lass=number>2</s
d2e0: 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 pan> (<span clas
d2f0: 73 3d 76 61 72 69 61 62 6c 65 3e 63 3d 3c 2f 73 s=variable>c=</s
d300: 70 61 6e 3e 20 27 3c 73 70 61 6e 20 63 6c 61 73 pan> '<span clas
d310: 73 3d 76 61 72 69 61 62 6c 65 3e 78 3c 2f 73 70 s=variable>x</sp
d320: 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
d330: 6e 75 6d 62 65 72 3e 34 3c 2f 73 70 61 6e 3e 29 number>4</span>)
d340: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 )). (
d350: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
d360: 61 62 6c 65 3e 63 2d 64 65 66 61 75 6c 74 3c 2f able>c-default</
d370: 73 70 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 span> (<span cla
d380: 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 3d 3c 2f ss=variable>c=</
d390: 73 70 61 6e 3e 20 27 3c 73 70 61 6e 20 63 6c 61 span> '<span cla
d3a0: 73 73 3d 76 61 72 69 61 62 6c 65 3e 78 3c 2f 73 ss=variable>x</s
d3b0: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
d3c0: 3d 6e 75 6d 62 65 72 3e 35 3c 2f 73 70 61 6e 3e =number>5</span>
d3d0: 29 29 29 29 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a )))).</pre>.<p>.
d3e0: 0a 3c 70 72 65 3e 0a 20 20 73 77 69 74 63 68 20 .<pre>. switch
d3f0: 28 79 29 20 7b 0a 20 20 20 20 20 20 63 61 73 65 (y) {. case
d400: 20 31 3a 0a 20 20 20 20 20 20 20 20 20 20 78 20 1:. x
d410: 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 62 = 1;. b
d420: 72 65 61 6b 3b 0a 0a 20 20 23 69 66 64 65 66 20 reak;.. #ifdef
d430: 48 5f 54 57 4f 0a 20 20 20 20 20 20 63 61 73 65 H_TWO. case
d440: 20 32 3a 0a 20 20 20 20 20 20 20 20 20 20 78 20 2:. x
d450: 3d 20 34 3b 0a 20 20 20 20 20 20 20 20 20 20 62 = 4;. b
d460: 72 65 61 6b 3b 0a 20 20 23 65 6e 64 69 66 20 2f reak;. #endif /
d470: 2a 20 48 5f 54 57 4f 20 2a 2f 0a 20 20 20 20 20 * H_TWO */.
d480: 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 default:.
d490: 20 20 20 20 78 20 3d 20 35 3b 0a 20 20 20 20 20 x = 5;.
d4a0: 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 7d 0a break;. }.
d4b0: 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 0a 4d 61 63 72 </pre>.<p>..Macr
d4c0: 6f 73 20 63 61 6e 20 62 65 20 68 61 6e 64 6c 65 os can be handle
d4d0: 64 20 77 69 74 68 20 3c 63 6f 64 65 20 63 6c 61 d with <code cla
d4e0: 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 ss=scheme><span
d4f0: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 class=variable>c
d500: 70 70 2d 64 65 66 69 6e 65 3c 2f 73 70 61 6e 3e pp-define</span>
d510: 3c 2f 63 6f 64 65 3e 2c 20 77 68 69 63 68 20 6b </code>, which k
d520: 6e 6f 77 73 20 74 6f 20 77 72 61 70 0a 69 6e 64 nows to wrap.ind
d530: 69 76 69 64 75 61 6c 20 76 61 72 69 61 62 6c 65 ividual variable
d540: 20 72 65 66 65 72 65 6e 63 65 73 20 69 6e 20 70 references in p
d550: 61 72 65 6e 74 68 65 73 69 73 3a 0a 3c 70 3e 0a arenthesis:.<p>.
d560: 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 .<code class=sch
d570: 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 eme>(<span class
d580: 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 =variable>fmt</s
d590: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
d5a0: 3d 62 6f 6f 6c 65 61 6e 3e 23 74 3c 2f 73 70 61 =boolean>#t</spa
d5b0: 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d n> (<span class=
d5c0: 76 61 72 69 61 62 6c 65 3e 63 70 70 2d 64 65 66 variable>cpp-def
d5d0: 69 6e 65 3c 2f 73 70 61 6e 3e 20 27 28 3c 73 70 ine</span> '(<sp
d5e0: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
d5f0: 65 3e 6d 69 6e 3c 2f 73 70 61 6e 3e 20 3c 73 70 e>min</span> <sp
d600: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
d610: 65 3e 78 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e e>x</span> <span
d620: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
d630: 79 3c 2f 73 70 61 6e 3e 29 20 28 3c 73 70 61 6e y</span>) (<span
d640: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
d650: 63 2d 69 66 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 c-if</span> (<sp
d660: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
d670: 65 3e 63 26 6c 74 3b 3c 2f 73 70 61 6e 3e 20 27 e>c<</span> '
d680: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
d690: 61 62 6c 65 3e 78 3c 2f 73 70 61 6e 3e 20 27 3c able>x</span> '<
d6a0: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
d6b0: 62 6c 65 3e 79 3c 2f 73 70 61 6e 3e 29 20 27 3c ble>y</span>) '<
d6c0: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
d6d0: 62 6c 65 3e 78 3c 2f 73 70 61 6e 3e 20 27 3c 73 ble>x</span> '<s
d6e0: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
d6f0: 6c 65 3e 79 3c 2f 73 70 61 6e 3e 29 29 29 3c 2f le>y</span>)))</
d700: 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 3c 70 72 65 3e code>.<p>..<pre>
d710: 0a 20 20 23 64 65 66 69 6e 65 20 6d 69 6e 28 78 . #define min(x
d720: 2c 20 79 29 20 28 28 28 78 29 20 26 6c 74 3b 20 , y) (((x) <
d730: 28 79 29 29 20 3f 20 28 78 29 20 3a 20 28 79 29 (y)) ? (x) : (y)
d740: 29 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 0a 41 73 ).</pre>.<p>..As
d750: 20 77 69 74 68 20 61 6c 6c 20 43 20 66 6f 72 6d with all C form
d760: 61 74 74 65 72 73 2c 20 74 68 65 20 43 50 50 20 atters, the CPP
d770: 6f 75 74 70 75 74 20 69 73 20 70 72 65 74 74 79 output is pretty
d780: 20 70 72 69 6e 74 65 64 20 61 73 0a 6e 65 65 64 printed as.need
d790: 65 64 2c 20 61 6e 64 20 69 66 20 69 74 20 77 72 ed, and if it wr
d7a0: 61 70 73 20 6f 76 65 72 20 73 65 76 65 72 61 6c aps over several
d7b0: 20 6c 69 6e 65 73 20 74 68 65 20 6c 69 6e 65 73 lines the lines
d7c0: 20 61 72 65 20 74 65 72 6d 69 6e 61 74 65 64 0a are terminated.
d7d0: 77 69 74 68 20 61 20 62 61 63 6b 73 6c 61 73 68 with a backslash
d7e0: 2e 0a 3c 70 3e 0a 0a 54 6f 20 77 72 69 74 65 20 ..<p>..To write
d7f0: 61 20 43 20 68 65 61 64 65 72 20 66 69 6c 65 20 a C header file
d800: 74 68 61 74 20 69 73 20 69 6e 63 6c 75 64 65 64 that is included
d810: 20 61 74 20 6d 6f 73 74 20 6f 6e 63 65 2c 20 79 at most once, y
d820: 6f 75 20 63 61 6e 20 77 72 61 70 0a 74 68 65 20 ou can wrap.the
d830: 65 6e 74 69 72 65 20 62 6f 64 79 20 69 6e 20 3c entire body in <
d840: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
d850: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
d860: 72 69 61 62 6c 65 3e 63 70 70 2d 77 72 61 70 2d riable>cpp-wrap-
d870: 68 65 61 64 65 72 3c 2f 73 70 61 6e 3e 3c 2f 63 header</span></c
d880: 6f 64 65 3e 3a 0a 3c 70 3e 0a 0a 3c 70 72 65 20 ode>:.<p>..<pre
d890: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 0a 20 20 class=scheme>.
d8a0: 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 (<span class=var
d8b0: 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 70 61 6e 3e iable>fmt</span>
d8c0: 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 62 6f 6f <span class=boo
d8d0: 6c 65 61 6e 3e 23 74 3c 2f 73 70 61 6e 3e 20 28 lean>#t</span> (
d8e0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
d8f0: 61 62 6c 65 3e 63 70 70 2d 77 72 61 70 2d 68 65 able>cpp-wrap-he
d900: 61 64 65 72 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 ader</span> <spa
d910: 6e 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e 26 n class=string>&
d920: 71 75 6f 74 3b 46 4f 4f 5f 48 26 71 75 6f 74 3b quot;FOO_H"
d930: 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20 20 20 20 </span>.
d940: 20 20 20 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 (<span class
d950: 3d 76 61 72 69 61 62 6c 65 3e 63 2d 65 78 74 65 =variable>c-exte
d960: 72 6e 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e rn</span> (<span
d970: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
d980: 63 2d 70 72 6f 74 6f 74 79 70 65 3c 2f 73 70 61 c-prototype</spa
d990: 6e 3e 20 27 3c 73 70 61 6e 20 63 6c 61 73 73 3d n> '<span class=
d9a0: 76 61 72 69 61 62 6c 65 3e 69 6e 74 3c 2f 73 70 variable>int</sp
d9b0: 61 6e 3e 20 27 3c 73 70 61 6e 20 63 6c 61 73 73 an> '<span class
d9c0: 3d 76 61 72 69 61 62 6c 65 3e 66 6f 6f 3c 2f 73 =variable>foo</s
d9d0: 70 61 6e 3e 20 27 28 29 29 29 29 29 0a 3c 2f 70 pan> '())))).</p
d9e0: 72 65 3e 0a 3c 70 3e 0a 0a 3c 70 72 65 3e 0a 20 re>.<p>..<pre>.
d9f0: 20 23 69 66 6e 64 65 66 20 46 4f 4f 5f 48 0a 20 #ifndef FOO_H.
da00: 20 23 64 65 66 69 6e 65 20 46 4f 4f 5f 48 0a 0a #define FOO_H..
da10: 20 20 65 78 74 65 72 6e 20 69 6e 74 20 66 6f 6f extern int foo
da20: 20 28 29 3b 0a 0a 20 20 23 65 6e 64 69 66 20 2f ();.. #endif /
da30: 2a 20 21 20 46 4f 4f 5f 48 20 2a 2f 0a 3c 2f 70 * ! FOO_H */.</p
da40: 72 65 3e 0a 3c 70 3e 0a 0a 3c 61 20 6e 61 6d 65 re>.<p>..<a name
da50: 3d 22 53 45 43 54 49 4f 4e 5f 36 2e 33 22 3e 3c ="SECTION_6.3"><
da60: 68 32 3e 36 2e 33 26 6e 62 73 70 3b 26 6e 62 73 h2>6.3 &nbs
da70: 70 3b 43 75 73 74 6f 6d 69 7a 69 6e 67 20 43 20 p;Customizing C
da80: 53 74 79 6c 65 3c 2f 68 32 3e 0a 0a 54 68 65 20 Style</h2>..The
da90: 6f 75 74 70 75 74 20 75 73 65 73 20 61 20 73 69 output uses a si
daa0: 6d 70 6c 69 66 69 65 64 20 4b 26 61 6d 70 3b 52 mplified K&R
dab0: 20 73 74 79 6c 65 20 77 69 74 68 20 34 20 73 70 style with 4 sp
dac0: 61 63 65 73 20 66 6f 72 20 69 6e 64 65 6e 74 61 aces for indenta
dad0: 74 69 6f 6e 0a 62 79 20 64 65 66 61 75 6c 74 2e tion.by default.
dae0: 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 The following
daf0: 73 74 61 74 65 20 76 61 72 69 61 62 6c 65 73 20 state variables
db00: 6c 65 74 20 79 6f 75 20 6f 76 65 72 72 69 64 65 let you override
db10: 20 74 68 65 0a 73 74 79 6c 65 3a 0a 3c 70 3e 0a the.style:.<p>.
db20: 0a 3c 68 33 3e 27 69 6e 64 65 6e 74 2d 73 70 61 .<h3>'indent-spa
db30: 63 65 3c 2f 68 33 3e 0a 0a 68 6f 77 20 6d 61 6e ce</h3>..how man
db40: 79 20 73 70 61 63 65 73 20 74 6f 20 69 6e 64 65 y spaces to inde
db50: 6e 74 20 62 6f 64 69 65 73 2c 20 64 65 66 61 75 nt bodies, defau
db60: 6c 74 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 lt <code class=s
db70: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
db80: 73 3d 6e 75 6d 62 65 72 3e 34 3c 2f 73 70 61 6e s=number>4</span
db90: 3e 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 3c 68 ></code>.<p>..<h
dba0: 33 3e 27 73 77 69 74 63 68 2d 69 6e 64 65 6e 74 3>'switch-indent
dbb0: 2d 73 70 61 63 65 3c 2f 68 33 3e 0a 0a 68 6f 77 -space</h3>..how
dbc0: 20 6d 61 6e 79 20 73 70 61 63 65 73 20 74 6f 20 many spaces to
dbd0: 69 6e 64 65 6e 74 20 73 77 69 74 63 68 20 63 6c indent switch cl
dbe0: 61 75 73 65 73 2c 20 61 6c 73 6f 20 64 65 66 61 auses, also defa
dbf0: 75 6c 74 73 20 74 6f 20 3c 63 6f 64 65 20 63 6c ults to <code cl
dc00: 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e ass=scheme><span
dc10: 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 34 3c class=number>4<
dc20: 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 0a 3c 70 /span></code>.<p
dc30: 3e 0a 0a 3c 68 33 3e 27 6e 65 77 6c 69 6e 65 2d >..<h3>'newline-
dc40: 62 65 66 6f 72 65 2d 62 72 61 63 65 3f 3c 2f 68 before-brace?</h
dc50: 33 3e 0a 0a 69 6e 73 65 72 74 20 61 20 6e 65 77 3>..insert a new
dc60: 6c 69 6e 65 20 62 65 66 6f 72 65 20 61 6e 20 6f line before an o
dc70: 70 65 6e 20 62 72 61 63 65 20 28 6e 6f 6e 2d 4b pen brace (non-K
dc80: 26 61 6d 70 3b 52 29 2c 20 64 65 66 61 75 6c 74 &R), default
dc90: 73 20 20 74 6f 20 3c 63 6f 64 65 20 63 6c 61 73 s to <code clas
dca0: 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 s=scheme><span c
dcb0: 6c 61 73 73 3d 62 6f 6f 6c 65 61 6e 3e 23 66 3c lass=boolean>#f<
dcc0: 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 0a 3c 70 /span></code>.<p
dcd0: 3e 0a 0a 3c 68 33 3e 27 62 72 61 63 65 6c 65 73 >..<h3>'braceles
dce0: 73 2d 62 6f 64 69 65 73 3f 3c 2f 68 33 3e 0a 0a s-bodies?</h3>..
dcf0: 6f 6d 69 74 20 62 72 61 63 65 73 20 77 68 65 6e omit braces when
dd00: 20 77 65 20 63 61 6e 20 70 72 6f 76 65 20 74 68 we can prove th
dd10: 65 79 20 61 72 65 6e 27 74 20 6e 65 65 64 65 64 ey aren't needed
dd20: 0a 3c 70 3e 0a 0a 3c 68 33 3e 27 6e 6f 6e 2d 73 .<p>..<h3>'non-s
dd30: 70 61 63 65 64 2d 6f 70 73 3f 3c 2f 68 33 3e 0a paced-ops?</h3>.
dd40: 0a 6f 6d 69 74 20 73 70 61 63 65 73 20 62 65 74 .omit spaces bet
dd50: 77 65 65 6e 20 6f 70 65 72 61 74 6f 72 73 20 61 ween operators a
dd60: 6e 64 20 6f 70 65 72 61 6e 64 73 20 66 6f 72 20 nd operands for
dd70: 67 72 6f 75 70 73 20 6f 66 20 76 61 72 69 61 62 groups of variab
dd80: 6c 65 73 20 61 6e 64 0a 6c 69 74 65 72 61 6c 73 les and.literals
dd90: 20 28 65 2e 67 2e 20 26 71 75 6f 74 3b 61 2b 62 (e.g. "a+b
dda0: 2b 33 26 71 75 6f 74 3b 20 69 6e 73 74 65 61 64 +3" instead
ddb0: 20 6f 66 20 26 71 75 6f 74 3b 61 20 2b 20 62 20 of "a + b
ddc0: 2b 20 33 26 71 75 6f 74 3b 7d 0a 3c 70 3e 0a 0a + 3"}.<p>..
ddd0: 3c 68 33 3e 27 6e 6f 2d 77 72 61 70 3f 3c 2f 68 <h3>'no-wrap?</h
dde0: 33 3e 0a 0a 44 6f 6e 27 74 20 77 72 61 70 20 66 3>..Don't wrap f
ddf0: 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20 61 6e unction calls an
de00: 64 20 6c 6f 6e 67 20 6f 70 65 72 61 74 6f 72 20 d long operator
de10: 67 72 6f 75 70 73 20 6f 76 65 72 20 6d 75 6c 69 groups over muli
de20: 74 70 6c 65 0a 6c 69 6e 65 73 2e 20 20 46 75 6e tple.lines. Fun
de30: 63 74 69 6f 6e 73 20 61 6e 64 20 63 6f 6e 74 72 ctions and contr
de40: 6f 6c 20 73 74 72 75 63 74 75 72 65 73 20 77 69 ol structures wi
de50: 6c 6c 20 73 74 69 6c 6c 20 75 73 65 20 6d 75 6c ll still use mul
de60: 74 69 70 6c 65 0a 6c 69 6e 65 73 2e 0a 3c 70 3e tiple.lines..<p>
de70: 0a 0a 54 68 65 20 43 20 66 6f 72 6d 61 74 74 65 ..The C formatte
de80: 72 73 20 61 6c 73 6f 20 72 65 73 70 65 63 74 20 rs also respect
de90: 74 68 65 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d the <code class=
dea0: 73 63 68 65 6d 65 3e 27 3c 73 70 61 6e 20 63 6c scheme>'<span cl
deb0: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 72 61 64 ass=variable>rad
dec0: 69 78 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e ix</span></code>
ded0: 20 61 6e 64 20 3c 63 6f 64 65 20 63 6c 61 73 73 and <code class
dee0: 3d 73 63 68 65 6d 65 3e 27 3c 73 70 61 6e 20 63 =scheme>'<span c
def0: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 70 72 lass=variable>pr
df00: 65 63 69 73 69 6f 6e 3c 2f 73 70 61 6e 3e 3c 2f ecision</span></
df10: 63 6f 64 65 3e 20 73 65 74 74 69 6e 67 73 2e 0a code> settings..
df20: 3c 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 53 45 <p>..<a name="SE
df30: 43 54 49 4f 4e 5f 36 2e 34 22 3e 3c 68 32 3e 36 CTION_6.4"><h2>6
df40: 2e 34 26 6e 62 73 70 3b 26 6e 62 73 70 3b 43 20 .4 C
df50: 46 6f 72 6d 61 74 74 65 72 20 49 6e 64 65 78 3c Formatter Index<
df60: 2f 68 32 3e 0a 0a 3c 68 33 3e 28 63 2d 69 66 20 /h2>..<h3>(c-if
df70: 26 6c 74 3b 63 6f 6e 64 69 74 69 6f 6e 26 67 74 <condition>
df80: 3b 20 26 6c 74 3b 70 61 73 73 26 67 74 3b 20 5b ; <pass> [
df90: 26 6c 74 3b 66 61 69 6c 26 67 74 3b 20 5b 26 6c <fail> [&l
dfa0: 74 3b 63 6f 6e 64 69 74 69 6f 6e 32 26 67 74 3b t;condition2>
dfb0: 20 26 6c 74 3b 70 61 73 73 32 26 67 74 3b 20 2e <pass2> .
dfc0: 2e 2e 5d 5d 29 3c 2f 68 33 3e 0a 0a 50 72 69 6e ..]])</h3>..Prin
dfd0: 74 20 61 20 63 68 61 69 6e 20 6f 66 20 69 66 2f t a chain of if/
dfe0: 65 6c 73 65 20 63 6f 6e 64 69 74 69 6f 6e 73 2e else conditions.
dff0: 20 20 55 73 65 20 61 20 66 69 6e 61 6c 20 63 6f Use a final co
e000: 6e 64 69 74 69 6f 6e 20 6f 66 20 3c 63 6f 64 65 ndition of <code
e010: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 27 3c class=scheme>'<
e020: 73 70 61 6e 20 63 6c 61 73 73 3d 6b 65 79 77 6f span class=keywo
e030: 72 64 3e 65 6c 73 65 3c 2f 73 70 61 6e 3e 3c 2f rd>else</span></
e040: 63 6f 64 65 3e 0a 66 6f 72 20 61 20 66 69 6e 61 code>.for a fina
e050: 6c 20 65 6c 73 65 20 63 6c 61 75 73 65 2e 0a 3c l else clause..<
e060: 70 3e 0a 0a 3c 68 33 3e 28 63 2d 66 6f 72 20 26 p>..<h3>(c-for &
e070: 6c 74 3b 69 6e 69 74 26 67 74 3b 20 26 6c 74 3b lt;init> <
e080: 63 6f 6e 64 69 74 69 6f 6e 26 67 74 3b 20 26 6c condition> &l
e090: 74 3b 75 70 64 61 74 65 26 67 74 3b 20 26 6c 74 t;update> <
e0a0: 3b 62 6f 64 79 26 67 74 3b 20 2e 2e 2e 29 3c 2f ;body> ...)</
e0b0: 68 33 3e 0a 0a 3c 68 33 3e 28 63 2d 77 68 69 6c h3>..<h3>(c-whil
e0c0: 65 20 26 6c 74 3b 63 6f 6e 64 69 74 69 6f 6e 26 e <condition&
e0d0: 67 74 3b 20 26 6c 74 3b 62 6f 64 79 26 67 74 3b gt; <body>
e0e0: 20 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a 42 61 73 69 ...)</h3>..Basi
e0f0: 63 20 6c 6f 6f 70 20 63 6f 6e 73 74 72 75 63 74 c loop construct
e100: 73 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 63 2d 66 s..<p>..<h3>(c-f
e110: 75 6e 20 26 6c 74 3b 74 79 70 65 26 67 74 3b 20 un <type>
e120: 26 6c 74 3b 6e 61 6d 65 26 67 74 3b 20 26 6c 74 <name> <
e130: 3b 70 61 72 61 6d 73 26 67 74 3b 20 26 6c 74 3b ;params> <
e140: 62 6f 64 79 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 body> ...)</h
e150: 33 3e 0a 0a 3c 68 33 3e 28 63 2d 70 72 6f 74 6f 3>..<h3>(c-proto
e160: 74 79 70 65 20 26 6c 74 3b 74 79 70 65 26 67 74 type <type>
e170: 3b 20 26 6c 74 3b 6e 61 6d 65 26 67 74 3b 20 26 ; <name> &
e180: 6c 74 3b 70 61 72 61 6d 73 26 67 74 3b 29 3c 2f lt;params>)</
e190: 68 33 3e 0a 0a 4f 75 74 70 75 74 20 61 20 66 75 h3>..Output a fu
e1a0: 6e 63 74 69 6f 6e 20 6f 72 20 66 75 6e 63 74 69 nction or functi
e1b0: 6f 6e 20 70 72 6f 74 6f 74 79 70 65 2e 20 20 54 on prototype. T
e1c0: 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 73 68 he parameters sh
e1d0: 6f 75 6c 64 20 62 65 20 61 0a 6c 69 73 74 20 32 ould be a.list 2
e1e0: 2d 65 6c 65 6d 65 6e 74 20 6c 69 73 74 73 20 6f -element lists o
e1f0: 66 20 74 68 65 20 66 6f 72 6d 20 3c 63 6f 64 65 f the form <code
e200: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 28 3c class=scheme>(<
e210: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
e220: 62 6c 65 3e 26 6c 74 3b 70 61 72 61 6d 2d 74 79 ble><param-ty
e230: 70 65 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73 pe></span> <s
e240: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
e250: 6c 65 3e 26 6c 74 3b 70 61 72 61 6d 2d 6e 61 6d le><param-nam
e260: 65 26 67 74 3b 3c 2f 73 70 61 6e 3e 29 3c 2f 63 e></span>)</c
e270: 6f 64 65 3e 2c 0a 77 68 69 63 68 20 61 72 65 20 ode>,.which are
e280: 6f 75 74 70 75 74 20 77 69 74 68 20 44 53 50 2e output with DSP.
e290: 20 20 41 20 70 61 72 61 6d 65 74 65 72 20 63 61 A parameter ca
e2a0: 6e 20 62 65 20 61 62 62 72 65 76 69 61 74 65 64 n be abbreviated
e2b0: 20 61 73 20 6a 75 73 74 20 74 68 65 0a 73 79 6d as just the.sym
e2c0: 62 6f 6c 20 6e 61 6d 65 2c 20 6f 72 20 3c 63 6f bol name, or <co
e2d0: 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
e2e0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c <span class=bool
e2f0: 65 61 6e 3e 23 66 3c 2f 73 70 61 6e 3e 3c 2f 63 ean>#f</span></c
e300: 6f 64 65 3e 20 63 61 6e 20 62 65 20 70 61 73 73 ode> can be pass
e310: 65 64 20 61 73 20 74 68 65 20 74 79 70 65 2c 20 ed as the type,
e320: 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68 in which case th
e330: 65 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 e.<code class=sc
e340: 68 65 6d 65 3e 27 3c 73 70 61 6e 20 63 6c 61 73 heme>'<span clas
e350: 73 3d 76 61 72 69 61 62 6c 65 3e 64 65 66 61 75 s=variable>defau
e360: 6c 74 2d 74 79 70 65 3c 2f 73 70 61 6e 3e 3c 2f lt-type</span></
e370: 63 6f 64 65 3e 20 73 74 61 74 65 20 76 61 72 69 code> state vari
e380: 61 62 6c 65 20 69 73 20 75 73 65 64 2e 20 20 54 able is used. T
e390: 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 6d 61 he parameters ma
e3a0: 79 20 62 65 20 61 0a 64 6f 74 74 65 64 20 6c 69 y be a.dotted li
e3b0: 73 74 2c 20 69 6e 20 77 68 69 63 68 20 63 61 73 st, in which cas
e3c0: 65 20 65 6c 6c 69 70 73 65 73 20 66 6f 72 20 61 e ellipses for a
e3d0: 20 43 20 76 61 72 69 61 64 69 63 20 61 72 65 20 C variadic are
e3e0: 69 6e 73 65 72 74 65 64 20 2d 0a 74 68 65 20 61 inserted -.the a
e3f0: 63 74 75 61 6c 20 6e 61 6d 65 20 6f 66 20 74 68 ctual name of th
e400: 65 20 64 6f 74 74 65 64 20 76 61 6c 75 65 20 69 e dotted value i
e410: 73 20 69 67 6e 6f 72 65 64 2e 0a 3c 70 3e 0a 0a s ignored..<p>..
e420: 54 79 70 65 73 20 61 72 65 20 6a 75 73 74 20 74 Types are just t
e430: 79 70 69 63 61 6c 6c 79 20 6a 75 73 74 20 73 79 ypically just sy
e440: 6d 62 6f 6c 73 2c 20 6f 72 20 6c 69 73 74 73 20 mbols, or lists
e450: 6f 66 20 73 79 6d 62 6f 6c 73 20 73 75 63 68 20 of symbols such
e460: 61 73 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 as.<code class=s
e470: 63 68 65 6d 65 3e 27 28 3c 73 70 61 6e 20 63 6c cheme>'(<span cl
e480: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 6f 6e ass=variable>con
e490: 73 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 st</span> <span
e4a0: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 class=variable>c
e4b0: 68 61 72 3c 2f 73 70 61 6e 3e 29 3c 2f 63 6f 64 har</span>)</cod
e4c0: 65 3e 2e 20 20 41 20 63 6f 6d 70 6c 65 74 65 20 e>. A complete
e4d0: 64 65 73 63 72 69 70 74 69 6f 6e 20 69 73 20 67 description is g
e4e0: 69 76 65 6e 20 62 65 6c 6f 77 20 69 6e 20 73 65 iven below in se
e4f0: 63 74 69 6f 6e 0a 3c 61 20 68 72 65 66 3d 22 23 ction.<a href="#
e500: 53 45 43 54 49 4f 4e 5f 36 2e 36 22 3e 36 2e 36 SECTION_6.6">6.6
e510: 3c 2f 61 3e 2e 0a 3c 70 3e 0a 0a 54 68 65 73 65 </a>..<p>..These
e520: 20 63 61 6e 20 61 6c 73 6f 20 61 63 63 65 73 73 can also access
e530: 65 64 20 61 73 20 25 66 75 6e 20 61 6e 64 20 25 ed as %fun and %
e540: 70 72 6f 74 6f 74 79 70 65 20 61 74 20 74 68 65 prototype at the
e550: 20 68 65 61 64 20 6f 66 20 61 20 6c 69 73 74 2e head of a list.
e560: 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 63 2d 76 61 72 .<p>..<h3>(c-var
e570: 20 26 6c 74 3b 74 79 70 65 26 67 74 3b 20 26 6c <type> &l
e580: 74 3b 6e 61 6d 65 26 67 74 3b 20 5b 26 6c 74 3b t;name> [<
e590: 69 6e 69 74 2d 76 61 6c 75 65 26 67 74 3b 5d 29 init-value>])
e5a0: 3c 2f 68 33 3e 0a 0a 44 65 63 6c 61 72 65 73 20 </h3>..Declares
e5b0: 61 6e 64 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 69 and optionally i
e5c0: 6e 69 74 69 61 6c 69 7a 65 73 20 61 20 76 61 72 nitializes a var
e5d0: 69 61 62 6c 65 2e 20 20 41 6c 73 6f 20 61 63 63 iable. Also acc
e5e0: 65 73 73 65 64 20 61 73 20 25 76 61 72 0a 61 74 essed as %var.at
e5f0: 20 74 68 65 20 68 65 61 64 20 6f 66 20 61 20 6c the head of a l
e600: 69 73 74 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 63 ist..<p>..<h3>(c
e610: 2d 62 65 67 69 6e 20 26 6c 74 3b 65 78 70 72 26 -begin <expr&
e620: 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a 4f gt; ...)</h3>..O
e630: 75 74 70 75 74 73 20 65 61 63 68 20 6f 66 20 74 utputs each of t
e640: 68 65 20 26 6c 74 3b 65 78 70 72 26 67 74 3b 73 he <expr>s
e650: 2c 20 73 65 70 61 72 61 74 65 64 20 62 79 20 73 , separated by s
e660: 65 6d 69 2d 63 6f 6c 6f 6e 73 20 69 66 20 69 6e emi-colons if in
e670: 20 61 0a 73 74 61 74 65 6d 65 6e 74 20 6f 72 20 a.statement or
e680: 63 6f 6d 6d 61 73 20 69 66 20 69 6e 20 61 6e 20 commas if in an
e690: 65 78 70 72 65 73 73 69 6f 6e 2e 0a 3c 70 3e 0a expression..<p>.
e6a0: 0a 3c 68 33 3e 28 63 2d 73 77 69 74 63 68 20 26 .<h3>(c-switch &
e6b0: 6c 74 3b 63 6c 61 75 73 65 26 67 74 3b 20 2e 2e lt;clause> ..
e6c0: 2e 29 3c 2f 68 33 3e 0a 0a 3c 68 33 3e 28 63 2d .)</h3>..<h3>(c-
e6d0: 63 61 73 65 20 26 6c 74 3b 76 61 6c 75 65 73 26 case <values&
e6e0: 67 74 3b 20 26 6c 74 3b 62 6f 64 79 26 67 74 3b gt; <body>
e6f0: 20 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a 3c 68 33 3e ...)</h3>..<h3>
e700: 28 63 2d 63 61 73 65 2f 66 61 6c 6c 74 68 72 6f (c-case/fallthro
e710: 75 67 68 20 26 6c 74 3b 76 61 6c 75 65 73 26 67 ugh <values&g
e720: 74 3b 20 26 6c 74 3b 62 6f 64 79 26 67 74 3b 20 t; <body>
e730: 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a 3c 68 33 3e 28 ...)</h3>..<h3>(
e740: 63 2d 64 65 66 61 75 6c 74 20 26 6c 74 3b 62 6f c-default <bo
e750: 64 79 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e dy> ...)</h3>
e760: 0a 0a 53 77 69 74 63 68 20 73 74 61 74 65 6d 65 ..Switch stateme
e770: 6e 74 73 2e 20 20 49 6e 20 61 64 64 69 74 69 6f nts. In additio
e780: 6e 20 74 6f 20 75 73 69 6e 67 20 74 68 65 20 63 n to using the c
e790: 6c 61 75 73 65 20 66 6f 72 6d 61 74 74 65 72 73 lause formatters
e7a0: 2c 0a 63 6c 61 75 73 65 73 20 69 6e 73 69 64 65 ,.clauses inside
e7b0: 20 61 20 73 77 69 74 63 68 20 6d 61 79 20 62 65 a switch may be
e7c0: 20 68 61 6e 64 6c 65 64 20 77 69 74 68 20 61 20 handled with a
e7d0: 53 63 68 65 6d 65 20 43 41 53 45 2d 6c 69 6b 65 Scheme CASE-like
e7e0: 20 6c 69 73 74 2c 0a 77 69 74 68 20 74 68 65 20 list,.with the
e7f0: 63 61 72 20 61 20 6c 69 73 74 20 6f 66 20 63 61 car a list of ca
e800: 73 65 20 76 61 6c 75 65 73 20 61 6e 64 20 74 68 se values and th
e810: 65 20 63 64 72 20 74 68 65 20 62 6f 64 79 2e 0a e cdr the body..
e820: 3c 70 3e 0a 0a 3c 68 33 3e 28 63 2d 6c 61 62 65 <p>..<h3>(c-labe
e830: 6c 20 26 6c 74 3b 6e 61 6d 65 26 67 74 3b 29 3c l <name>)<
e840: 2f 68 33 3e 0a 0a 3c 68 33 3e 28 63 2d 67 6f 74 /h3>..<h3>(c-got
e850: 6f 20 26 6c 74 3b 6e 61 6d 65 26 67 74 3b 29 3c o <name>)<
e860: 2f 68 33 3e 0a 0a 3c 68 33 3e 28 63 2d 72 65 74 /h3>..<h3>(c-ret
e870: 75 72 6e 20 5b 26 6c 74 3b 72 65 73 75 6c 74 26 urn [<result&
e880: 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a 3c 68 33 3e gt;])</h3>..<h3>
e890: 63 2d 62 72 65 61 6b 3c 2f 68 33 3e 0a 0a 3c 68 c-break</h3>..<h
e8a0: 33 3e 63 2d 63 6f 6e 74 69 6e 75 65 3c 2f 68 33 3>c-continue</h3
e8b0: 3e 0a 0a 4d 61 6e 75 61 6c 20 6c 61 62 65 6c 73 >..Manual labels
e8c0: 20 61 6e 64 20 6a 75 6d 70 73 2e 20 20 4c 61 62 and jumps. Lab
e8d0: 65 6c 73 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 els can also be
e8e0: 61 63 63 65 73 73 65 64 20 61 73 20 61 20 6c 69 accessed as a li
e8f0: 73 74 0a 62 65 67 69 6e 6e 69 6e 67 20 77 69 74 st.beginning wit
e900: 68 20 61 20 63 6f 6c 6f 6e 2c 20 65 2e 67 2e 20 h a colon, e.g.
e910: 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
e920: 6d 65 3e 27 28 3c 73 70 61 6e 20 63 6c 61 73 73 me>'(<span class
e930: 3d 63 6f 6e 73 74 61 6e 74 3e 3a 3c 2f 73 70 61 =constant>:</spa
e940: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 n> <span class=v
e950: 61 72 69 61 62 6c 65 3e 6c 61 62 65 6c 31 3c 2f ariable>label1</
e960: 73 70 61 6e 3e 29 3c 2f 63 6f 64 65 3e 2e 0a 3c span>)</code>..<
e970: 70 3e 0a 0a 3c 68 33 3e 28 63 2d 63 6f 6e 73 74 p>..<h3>(c-const
e980: 20 26 6c 74 3b 65 78 70 72 26 67 74 3b 29 3c 2f <expr>)</
e990: 68 33 3e 0a 0a 3c 68 33 3e 28 63 2d 73 74 61 74 h3>..<h3>(c-stat
e9a0: 69 63 20 26 6c 74 3b 65 78 70 72 26 67 74 3b 29 ic <expr>)
e9b0: 3c 2f 68 33 3e 0a 0a 3c 68 33 3e 28 63 2d 76 6f </h3>..<h3>(c-vo
e9c0: 6c 61 74 69 6c 65 20 26 6c 74 3b 65 78 70 72 26 latile <expr&
e9d0: 67 74 3b 29 3c 2f 68 33 3e 0a 0a 3c 68 33 3e 28 gt;)</h3>..<h3>(
e9e0: 63 2d 72 65 73 74 72 69 63 74 20 26 6c 74 3b 65 c-restrict <e
e9f0: 78 70 72 26 67 74 3b 29 3c 2f 68 33 3e 0a 0a 3c xpr>)</h3>..<
ea00: 68 33 3e 28 63 2d 72 65 67 69 73 74 65 72 20 26 h3>(c-register &
ea10: 6c 74 3b 65 78 70 72 26 67 74 3b 29 3c 2f 68 33 lt;expr>)</h3
ea20: 3e 0a 0a 3c 68 33 3e 28 63 2d 61 75 74 6f 20 26 >..<h3>(c-auto &
ea30: 6c 74 3b 65 78 70 72 26 67 74 3b 29 3c 2f 68 33 lt;expr>)</h3
ea40: 3e 0a 0a 3c 68 33 3e 28 63 2d 69 6e 6c 69 6e 65 >..<h3>(c-inline
ea50: 20 26 6c 74 3b 65 78 70 72 26 67 74 3b 29 3c 2f <expr>)</
ea60: 68 33 3e 0a 0a 3c 68 33 3e 28 63 2d 65 78 74 65 h3>..<h3>(c-exte
ea70: 72 6e 20 26 6c 74 3b 65 78 70 72 26 67 74 3b 29 rn <expr>)
ea80: 3c 2f 68 33 3e 0a 0a 44 65 63 6c 61 72 61 74 69 </h3>..Declarati
ea90: 6f 6e 20 6d 6f 64 69 66 69 65 72 73 2e 20 20 4d on modifiers. M
eaa0: 61 79 20 62 65 20 6e 65 73 74 65 64 2e 0a 3c 70 ay be nested..<p
eab0: 3e 0a 0a 3c 68 33 3e 28 63 2d 65 78 74 65 72 6e >..<h3>(c-extern
eac0: 2f 43 20 26 6c 74 3b 62 6f 64 79 26 67 74 3b 20 /C <body>
ead0: 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a 57 72 61 70 73 ...)</h3>..Wraps
eae0: 20 62 6f 64 79 20 69 6e 20 61 6e 20 65 78 74 65 body in an exte
eaf0: 72 6e 20 26 71 75 6f 74 3b 43 26 71 75 6f 74 3b rn "C"
eb00: 20 7b 20 2e 2e 2e 20 7d 20 66 6f 72 20 75 73 65 { ... } for use
eb10: 20 77 69 74 68 20 43 2b 2b 2e 0a 3c 70 3e 0a 0a with C++..<p>..
eb20: 3c 68 33 3e 28 63 2d 63 61 73 74 20 26 6c 74 3b <h3>(c-cast <
eb30: 74 79 70 65 26 67 74 3b 20 26 6c 74 3b 65 78 70 type> <exp
eb40: 72 26 67 74 3b 29 3c 2f 68 33 3e 0a 0a 43 61 73 r>)</h3>..Cas
eb50: 74 73 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e ts an expression
eb60: 20 74 6f 20 61 20 74 79 70 65 2e 20 20 41 6c 73 to a type. Als
eb70: 6f 20 25 63 61 73 74 20 61 74 20 74 68 65 20 68 o %cast at the h
eb80: 65 61 64 20 6f 66 20 61 20 6c 69 73 74 2e 0a 3c ead of a list..<
eb90: 70 3e 0a 0a 3c 68 33 3e 28 63 2d 74 79 70 65 64 p>..<h3>(c-typed
eba0: 65 66 20 26 6c 74 3b 74 79 70 65 26 67 74 3b 20 ef <type>
ebb0: 26 6c 74 3b 6e 65 77 2d 6e 61 6d 65 26 67 74 3b <new-name>
ebc0: 20 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a 43 72 65 61 ...)</h3>..Crea
ebd0: 74 65 73 20 61 20 6e 65 77 20 74 79 70 65 20 64 tes a new type d
ebe0: 65 66 69 6e 69 74 69 6f 6e 20 77 69 74 68 20 6f efinition with o
ebf0: 6e 65 20 6f 72 20 6d 6f 72 65 20 6e 61 6d 65 73 ne or more names
ec00: 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 63 2d 73 74 ..<p>..<h3>(c-st
ec10: 72 75 63 74 20 5b 26 6c 74 3b 6e 61 6d 65 26 67 ruct [<name&g
ec20: 74 3b 5d 20 26 6c 74 3b 66 69 65 6c 64 2d 6c 69 t;] <field-li
ec30: 73 74 26 67 74 3b 20 5b 26 6c 74 3b 61 74 74 72 st> [<attr
ec40: 69 62 75 74 65 73 26 67 74 3b 5d 29 3c 2f 68 33 ibutes>])</h3
ec50: 3e 0a 0a 3c 68 33 3e 28 63 2d 75 6e 69 6f 6e 20 >..<h3>(c-union
ec60: 5b 26 6c 74 3b 6e 61 6d 65 26 67 74 3b 5d 20 26 [<name>] &
ec70: 6c 74 3b 66 69 65 6c 64 2d 6c 69 73 74 26 67 74 lt;field-list>
ec80: 3b 20 5b 26 6c 74 3b 61 74 74 72 69 62 75 74 65 ; [<attribute
ec90: 73 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a 3c 68 s>])</h3>..<h
eca0: 33 3e 28 63 2d 63 6c 61 73 73 20 5b 26 6c 74 3b 3>(c-class [<
ecb0: 6e 61 6d 65 26 67 74 3b 5d 20 26 6c 74 3b 66 69 name>] <fi
ecc0: 65 6c 64 2d 6c 69 73 74 26 67 74 3b 20 5b 26 6c eld-list> [&l
ecd0: 74 3b 61 74 74 72 69 62 75 74 65 73 26 67 74 3b t;attributes>
ece0: 5d 29 3c 2f 68 33 3e 0a 0a 3c 68 33 3e 28 63 2d ])</h3>..<h3>(c-
ecf0: 61 74 74 72 69 62 75 74 65 20 26 6c 74 3b 76 61 attribute <va
ed00: 6c 75 65 73 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 lues> ...)</h
ed10: 33 3e 0a 0a 43 6f 6d 70 6f 73 69 74 65 20 74 79 3>..Composite ty
ed20: 70 65 20 63 6f 6e 73 74 72 75 63 74 6f 72 73 2e pe constructors.
ed30: 20 20 41 74 74 72 69 62 75 74 65 73 20 6d 61 79 Attributes may
ed40: 20 62 65 20 61 63 63 65 73 73 65 64 20 61 73 0a be accessed as.
ed50: 25 61 74 74 72 69 62 75 74 65 20 61 74 20 74 68 %attribute at th
ed60: 65 20 68 65 61 64 20 6f 66 20 61 20 6c 69 73 74 e head of a list
ed70: 2e 0a 3c 70 3e 0a 0a 3c 70 72 65 20 63 6c 61 73 ..<p>..<pre clas
ed80: 73 3d 73 63 68 65 6d 65 3e 0a 20 20 28 3c 73 70 s=scheme>. (<sp
ed90: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
eda0: 65 3e 66 6d 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 e>fmt</span> <sp
edb0: 61 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c 65 61 6e an class=boolean
edc0: 3e 23 66 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 >#f</span> (<spa
edd0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
ede0: 3e 63 2d 73 74 72 75 63 74 3c 2f 73 70 61 6e 3e >c-struct</span>
edf0: 20 27 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 '<span class=va
ee00: 72 69 61 62 6c 65 3e 65 6d 70 6c 6f 79 65 65 3c riable>employee<
ee10: 2f 73 70 61 6e 3e 0a 20 20 20 20 20 20 20 20 20 /span>.
ee20: 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 28 '((
ee30: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
ee40: 61 62 6c 65 3e 73 68 6f 72 74 3c 2f 73 70 61 6e able>short</span
ee50: 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 > <span class=va
ee60: 72 69 61 62 6c 65 3e 61 67 65 3c 2f 73 70 61 6e riable>age</span
ee70: 3e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 >).
ee80: 20 20 20 20 20 20 20 20 20 20 20 28 28 3c 73 70 ((<sp
ee90: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
eea0: 65 3e 63 68 61 72 3c 2f 73 70 61 6e 3e 20 3c 73 e>char</span> <s
eeb0: 70 61 6e 20 63 6c 61 73 73 3d 67 6c 6f 62 61 6c pan class=global
eec0: 3e 2a 3c 2f 73 70 61 6e 3e 29 20 3c 73 70 61 6e >*</span>) <span
eed0: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
eee0: 6e 61 6d 65 3c 2f 73 70 61 6e 3e 29 0a 20 20 20 name</span>).
eef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ef00: 20 20 20 20 20 28 28 3c 73 70 61 6e 20 63 6c 61 ((<span cla
ef10: 73 73 3d 76 61 72 69 61 62 6c 65 3e 73 74 72 75 ss=variable>stru
ef20: 63 74 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e ct</span> (<span
ef30: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
ef40: 79 65 61 72 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 year</span> <spa
ef50: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
ef60: 3e 6d 6f 6e 74 68 3c 2f 73 70 61 6e 3e 20 3c 73 >month</span> <s
ef70: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
ef80: 6c 65 3e 64 61 79 3c 2f 73 70 61 6e 3e 29 29 20 le>day</span>))
ef90: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
efa0: 61 62 6c 65 3e 64 6f 62 3c 2f 73 70 61 6e 3e 29 able>dob</span>)
efb0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ).
efc0: 20 20 20 20 20 20 20 20 28 3c 73 70 61 6e 20 63 (<span c
efd0: 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 2d lass=variable>c-
efe0: 61 74 74 72 69 62 75 74 65 3c 2f 73 70 61 6e 3e attribute</span>
eff0: 20 27 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 '<span class=va
f000: 72 69 61 62 6c 65 3e 70 61 63 6b 65 64 3c 2f 73 riable>packed</s
f010: 70 61 6e 3e 29 29 29 0a 3c 2f 70 72 65 3e 0a 3c pan>))).</pre>.<
f020: 70 3e 0a 0a 3c 70 72 65 3e 0a 20 20 73 74 72 75 p>..<pre>. stru
f030: 63 74 20 65 6d 70 6c 6f 79 65 65 20 7b 0a 20 20 ct employee {.
f040: 20 20 20 20 73 68 6f 72 74 20 61 67 65 3b 0a 20 short age;.
f050: 20 20 20 20 20 63 68 61 72 2a 20 6e 61 6d 65 3b char* name;
f060: 0a 20 20 20 20 20 20 73 74 72 75 63 74 20 7b 0a . struct {.
f070: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 79 65 int ye
f080: 61 72 3b 0a 20 20 20 20 20 20 20 20 20 20 69 6e ar;. in
f090: 74 20 6d 6f 6e 74 68 3b 0a 20 20 20 20 20 20 20 t month;.
f0a0: 20 20 20 69 6e 74 20 64 61 79 3b 0a 20 20 20 20 int day;.
f0b0: 20 20 7d 20 64 6f 62 3b 0a 20 20 7d 20 5f 5f 61 } dob;. } __a
f0c0: 74 74 72 69 62 75 74 65 5f 5f 20 28 28 70 61 63 ttribute__ ((pac
f0d0: 6b 65 64 29 29 3b 0a 3c 2f 70 72 65 3e 0a 3c 70 ked));.</pre>.<p
f0e0: 3e 0a 0a 3c 68 33 3e 28 63 2d 65 6e 75 6d 20 5b >..<h3>(c-enum [
f0f0: 26 6c 74 3b 6e 61 6d 65 26 67 74 3b 5d 20 26 6c <name>] &l
f100: 74 3b 65 6e 75 6d 2d 6c 69 73 74 26 67 74 3b 29 t;enum-list>)
f110: 3c 2f 68 33 3e 0a 0a 45 6e 75 6d 65 72 61 74 65 </h3>..Enumerate
f120: 64 20 74 79 70 65 73 2e 20 20 3c 63 6f 64 65 20 d types. <code
f130: 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
f140: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
f150: 65 3e 26 6c 74 3b 65 6e 75 6d 2d 6c 69 73 74 26 e><enum-list&
f160: 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 gt;</span></code
f170: 3e 20 6d 61 79 20 62 65 20 73 74 72 69 6e 67 73 > may be strings
f180: 2c 20 73 79 6d 62 6f 6c 73 2c 20 6f 72 20 6c 69 , symbols, or li
f190: 73 74 73 20 6f 66 0a 73 74 72 69 6e 67 20 6f 72 sts of.string or
f1a0: 20 73 79 6d 62 6f 6c 20 66 6f 6c 6c 6f 77 65 64 symbol followed
f1b0: 20 62 79 20 74 68 65 20 65 6e 75 6d 27 73 20 76 by the enum's v
f1c0: 61 6c 75 65 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 alue..<p>..<h3>(
f1d0: 63 2d 63 6f 6d 6d 65 6e 74 20 26 6c 74 3b 66 6f c-comment <fo
f1e0: 72 6d 61 74 74 65 72 26 67 74 3b 20 2e 2e 2e 29 rmatter> ...)
f1f0: 3c 2f 68 33 3e 0a 0a 4f 75 74 70 75 74 73 20 74 </h3>..Outputs t
f200: 68 65 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 he <code class=s
f210: 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
f220: 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 66 s=variable><f
f230: 6f 72 6d 61 74 74 65 72 26 67 74 3b 3c 2f 73 70 ormatter></sp
f240: 61 6e 3e 3c 2f 63 6f 64 65 3e 73 20 77 72 61 70 an></code>s wrap
f250: 70 65 64 20 69 6e 20 43 27 73 20 2f 2a 20 2e 2e ped in C's /* ..
f260: 2e 20 2a 2f 20 63 6f 6d 6d 65 6e 74 2e 20 20 50 . */ comment. P
f270: 72 6f 70 65 72 6c 79 0a 65 73 63 61 70 65 73 20 roperly.escapes
f280: 6e 65 73 74 65 64 20 63 6f 6d 6d 65 6e 74 73 20 nested comments
f290: 69 6e 73 69 64 65 20 69 6e 20 61 6e 20 45 6d 61 inside in an Ema
f2a0: 63 73 2d 66 72 69 65 6e 64 6c 79 20 73 74 79 6c cs-friendly styl
f2b0: 65 2e 0a 3c 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d e..<p>..<a name=
f2c0: 22 53 45 43 54 49 4f 4e 5f 36 2e 35 22 3e 3c 68 "SECTION_6.5"><h
f2d0: 32 3e 36 2e 35 26 6e 62 73 70 3b 26 6e 62 73 70 2>6.5  
f2e0: 3b 43 20 50 72 65 70 72 6f 63 65 73 73 6f 72 20 ;C Preprocessor
f2f0: 46 6f 72 6d 61 74 74 65 72 20 49 6e 64 65 78 3c Formatter Index<
f300: 2f 68 32 3e 0a 0a 3c 68 33 3e 28 63 70 70 2d 69 /h2>..<h3>(cpp-i
f310: 6e 63 6c 75 64 65 20 26 6c 74 3b 66 69 6c 65 26 nclude <file&
f320: 67 74 3b 29 3c 2f 68 33 3e 0a 0a 49 66 20 66 69 gt;)</h3>..If fi
f330: 6c 65 20 69 73 20 61 20 73 74 72 69 6e 67 2c 20 le is a string,
f340: 6f 75 74 70 75 74 73 20 69 6e 20 69 74 20 26 71 outputs in it &q
f350: 75 6f 74 3b 71 75 6f 74 65 73 26 71 75 6f 74 3b uot;quotes"
f360: 2c 20 6f 74 68 65 72 77 69 73 65 20 28 61 73 20 , otherwise (as
f370: 61 20 73 79 6d 62 6f 6c 0a 6f 72 20 61 72 62 69 a symbol.or arbi
f380: 74 72 61 72 79 20 66 6f 72 6d 61 74 74 65 72 29 trary formatter)
f390: 20 69 74 20 6f 75 74 70 75 74 73 20 69 74 20 69 it outputs it i
f3a0: 6e 20 62 72 61 63 6b 65 74 73 2e 0a 3c 70 3e 0a n brackets..<p>.
f3b0: 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 .<code class=sch
f3c0: 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 eme>(<span class
f3d0: 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 =variable>fmt</s
f3e0: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
f3f0: 3d 62 6f 6f 6c 65 61 6e 3e 23 66 3c 2f 73 70 61 =boolean>#f</spa
f400: 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d n> (<span class=
f410: 76 61 72 69 61 62 6c 65 3e 63 70 70 2d 69 6e 63 variable>cpp-inc
f420: 6c 75 64 65 3c 2f 73 70 61 6e 3e 20 27 3c 73 70 lude</span> '<sp
f430: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
f440: 65 3e 73 74 64 69 6f 2e 68 3c 2f 73 70 61 6e 3e e>stdio.h</span>
f450: 29 29 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 3c ))</code>.<p>..<
f460: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
f470: 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6b 65 e><span class=ke
f480: 79 77 6f 72 64 3e 3d 26 67 74 3b 3c 2f 73 70 61 yword>=></spa
f490: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 n> <span class=s
f4a0: 74 72 69 6e 67 3e 26 71 75 6f 74 3b 23 69 6e 63 tring>"#inc
f4b0: 6c 75 64 65 20 26 6c 74 3b 73 74 64 69 6f 2e 68 lude <stdio.h
f4c0: 26 67 74 3b 6e 26 71 75 6f 74 3b 3c 2f 73 70 61 >n"</spa
f4d0: 6e 3e 3c 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 3c n></code>.<p>..<
f4e0: 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
f4f0: 65 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 e>(<span class=v
f500: 61 72 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 70 61 ariable>fmt</spa
f510: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 62 n> <span class=b
f520: 6f 6f 6c 65 61 6e 3e 23 66 3c 2f 73 70 61 6e 3e oolean>#f</span>
f530: 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 (<span class=va
f540: 72 69 61 62 6c 65 3e 63 70 70 2d 69 6e 63 6c 75 riable>cpp-inclu
f550: 64 65 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 de</span> <span
f560: 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 75 class=string>&qu
f570: 6f 74 3b 63 6f 6e 66 69 67 2e 68 26 71 75 6f 74 ot;config.h"
f580: 3b 3c 2f 73 70 61 6e 3e 29 29 3c 2f 63 6f 64 65 ;</span>))</code
f590: 3e 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 >.<p>..<code cla
f5a0: 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 ss=scheme><span
f5b0: 63 6c 61 73 73 3d 6b 65 79 77 6f 72 64 3e 3d 26 class=keyword>=&
f5c0: 67 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e gt;</span> <span
f5d0: 20 63 6c 61 73 73 3d 73 74 72 69 6e 67 3e 26 71 class=string>&q
f5e0: 75 6f 74 3b 23 69 6e 63 6c 75 64 65 20 26 71 75 uot;#include &qu
f5f0: 6f 74 3b 63 6f 6e 66 69 67 2e 68 26 71 75 6f 74 ot;config.h"
f600: 3b 6e 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 3c ;n"</span><
f610: 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 3c 68 33 3e /code>.<p>..<h3>
f620: 28 63 70 70 2d 64 65 66 69 6e 65 20 26 6c 74 3b (cpp-define <
f630: 6d 61 63 72 6f 26 67 74 3b 20 5b 26 6c 74 3b 76 macro> [<v
f640: 61 6c 75 65 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a alue>])</h3>.
f650: 0a 44 65 66 69 6e 65 73 20 61 20 70 72 65 70 72 .Defines a prepr
f660: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 2c 20 77 ocessor macro, w
f670: 68 69 63 68 20 6d 61 79 20 62 65 20 6a 75 73 74 hich may be just
f680: 20 61 20 6e 61 6d 65 20 6f 72 20 61 20 6c 69 73 a name or a lis
f690: 74 20 6f 66 0a 6e 61 6d 65 20 61 6e 64 20 70 61 t of.name and pa
f6a0: 72 61 6d 65 74 65 72 73 2e 20 20 50 72 6f 70 65 rameters. Prope
f6b0: 72 6c 79 20 77 72 61 70 73 20 74 68 65 20 76 61 rly wraps the va
f6c0: 6c 75 65 20 69 6e 20 70 61 72 65 6e 74 68 65 73 lue in parenthes
f6d0: 69 73 20 61 6e 64 0a 65 73 63 61 70 65 73 20 6e is and.escapes n
f6e0: 65 77 6c 69 6e 65 73 2e 20 20 41 20 64 6f 74 74 ewlines. A dott
f6f0: 65 64 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 ed parameter lis
f700: 74 20 77 69 6c 6c 20 75 73 65 20 74 68 65 20 43 t will use the C
f710: 39 39 20 76 61 72 69 61 64 69 63 0a 6d 61 63 72 99 variadic.macr
f720: 6f 20 73 79 6e 74 61 78 2c 20 61 6e 64 20 77 69 o syntax, and wi
f730: 6c 6c 20 61 6c 73 6f 20 73 75 62 73 74 69 74 75 ll also substitu
f740: 74 65 20 61 6e 79 20 72 65 66 65 72 65 6e 63 65 te any reference
f750: 73 20 74 6f 20 74 68 65 20 64 6f 74 74 65 64 0a s to the dotted.
f760: 6e 61 6d 65 20 77 69 74 68 20 3c 63 6f 64 65 3e name with <code>
f770: 5f 5f 56 41 5f 41 52 47 53 5f 5f 3c 2f 63 6f 64 __VA_ARGS__</cod
f780: 65 3e 3a 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 63 e>:.<p>..<code c
f790: 6c 61 73 73 3d 73 63 68 65 6d 65 3e 28 3c 73 70 lass=scheme>(<sp
f7a0: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
f7b0: 65 3e 66 6d 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 e>fmt</span> <sp
f7c0: 61 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c 65 61 6e an class=boolean
f7d0: 3e 23 74 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 >#t</span> (<spa
f7e0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
f7f0: 3e 63 70 70 2d 64 65 66 69 6e 65 3c 2f 73 70 61 >cpp-define</spa
f800: 6e 3e 20 27 28 3c 73 70 61 6e 20 63 6c 61 73 73 n> '(<span class
f810: 3d 76 61 72 69 61 62 6c 65 3e 65 70 72 69 6e 74 =variable>eprint
f820: 66 3c 2f 73 70 61 6e 3e 20 2e 20 3c 73 70 61 6e f</span> . <span
f830: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
f840: 61 72 67 73 3c 2f 73 70 61 6e 3e 29 20 27 28 3c args</span>) '(<
f850: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
f860: 62 6c 65 3e 66 70 72 69 6e 74 66 3c 2f 73 70 61 ble>fprintf</spa
f870: 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 n> <span class=v
f880: 61 72 69 61 62 6c 65 3e 73 74 64 65 72 72 3c 2f ariable>stderr</
f890: 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 span> <span clas
f8a0: 73 3d 76 61 72 69 61 62 6c 65 3e 61 72 67 73 3c s=variable>args<
f8b0: 2f 73 70 61 6e 3e 29 29 29 3c 2f 63 6f 64 65 3e /span>)))</code>
f8c0: 0a 3c 70 3e 0a 0a 3c 70 72 65 3e 0a 20 20 23 64 .<p>..<pre>. #d
f8d0: 65 66 69 6e 65 20 65 70 72 69 6e 74 66 28 2e 2e efine eprintf(..
f8e0: 2e 29 20 28 66 70 72 69 6e 74 66 28 73 74 64 65 .) (fprintf(stde
f8f0: 72 72 2c 20 5f 5f 56 41 5f 41 52 47 53 5f 5f 29 rr, __VA_ARGS__)
f900: 29 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 0a 3c 68 ).</pre>.<p>..<h
f910: 33 3e 28 63 70 70 2d 69 66 20 26 6c 74 3b 63 6f 3>(cpp-if <co
f920: 6e 64 69 74 69 6f 6e 26 67 74 3b 20 26 6c 74 3b ndition> <
f930: 70 61 73 73 26 67 74 3b 20 5b 26 6c 74 3b 66 61 pass> [<fa
f940: 69 6c 26 67 74 3b 20 2e 2e 2e 5d 29 3c 2f 68 33 il> ...])</h3
f950: 3e 0a 0a 3c 68 33 3e 28 63 70 70 2d 69 66 64 65 >..<h3>(cpp-ifde
f960: 66 20 26 6c 74 3b 63 6f 6e 64 69 74 69 6f 6e 26 f <condition&
f970: 67 74 3b 20 26 6c 74 3b 70 61 73 73 26 67 74 3b gt; <pass>
f980: 20 5b 26 6c 74 3b 66 61 69 6c 26 67 74 3b 20 2e [<fail> .
f990: 2e 2e 5d 29 3c 2f 68 33 3e 0a 0a 3c 68 33 3e 28 ..])</h3>..<h3>(
f9a0: 63 70 70 2d 69 66 6e 64 65 66 20 26 6c 74 3b 63 cpp-ifndef <c
f9b0: 6f 6e 64 69 74 69 6f 6e 26 67 74 3b 20 26 6c 74 ondition> <
f9c0: 3b 70 61 73 73 26 67 74 3b 20 5b 26 6c 74 3b 66 ;pass> [<f
f9d0: 61 69 6c 26 67 74 3b 20 2e 2e 2e 5d 29 3c 2f 68 ail> ...])</h
f9e0: 33 3e 0a 0a 3c 68 33 3e 28 63 70 70 2d 65 6c 69 3>..<h3>(cpp-eli
f9f0: 66 20 26 6c 74 3b 63 6f 6e 64 69 74 69 6f 6e 26 f <condition&
fa00: 67 74 3b 20 26 6c 74 3b 70 61 73 73 26 67 74 3b gt; <pass>
fa10: 20 5b 26 6c 74 3b 66 61 69 6c 26 67 74 3b 20 2e [<fail> .
fa20: 2e 2e 5d 29 3c 2f 68 33 3e 0a 0a 3c 68 33 3e 28 ..])</h3>..<h3>(
fa30: 63 70 70 2d 65 6c 73 65 20 26 6c 74 3b 62 6f 64 cpp-else <bod
fa40: 79 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e 0a y> ...)</h3>.
fa50: 0a 43 6f 6e 64 69 74 69 6f 6e 61 6c 20 63 6f 6d .Conditional com
fa60: 70 69 6c 61 74 69 6f 6e 2e 0a 3c 70 3e 0a 0a 3c pilation..<p>..<
fa70: 68 33 3e 28 63 70 70 2d 6c 69 6e 65 20 26 6c 74 h3>(cpp-line <
fa80: 3b 6e 75 6d 26 67 74 3b 20 5b 26 6c 74 3b 66 69 ;num> [<fi
fa90: 6c 65 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a 4c le>])</h3>..L
faa0: 69 6e 65 20 6e 75 6d 62 65 72 20 69 6e 66 6f 72 ine number infor
fab0: 6d 61 74 69 6f 6e 2e 0a 3c 70 3e 0a 0a 3c 68 33 mation..<p>..<h3
fac0: 3e 28 63 70 70 2d 70 72 61 67 6d 61 20 26 6c 74 >(cpp-pragma <
fad0: 3b 61 72 67 73 26 67 74 3b 20 2e 2e 2e 29 3c 2f ;args> ...)</
fae0: 68 33 3e 0a 0a 3c 68 33 3e 28 63 70 70 2d 65 72 h3>..<h3>(cpp-er
faf0: 72 6f 72 20 26 6c 74 3b 61 72 67 73 26 67 74 3b ror <args>
fb00: 20 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a 3c 68 33 3e ...)</h3>..<h3>
fb10: 28 63 70 70 2d 77 61 72 6e 69 6e 67 20 26 6c 74 (cpp-warning <
fb20: 3b 61 72 67 73 26 67 74 3b 20 2e 2e 2e 29 3c 2f ;args> ...)</
fb30: 68 33 3e 0a 0a 41 64 64 69 74 69 6f 6e 61 6c 20 h3>..Additional
fb40: 70 72 65 70 72 6f 63 65 73 73 6f 72 20 64 69 72 preprocessor dir
fb50: 65 63 74 69 76 65 73 2e 0a 3c 70 3e 0a 0a 3c 68 ectives..<p>..<h
fb60: 33 3e 28 63 70 70 2d 73 74 72 69 6e 67 69 66 79 3>(cpp-stringify
fb70: 20 26 6c 74 3b 65 78 70 72 26 67 74 3b 29 3c 2f <expr>)</
fb80: 68 33 3e 0a 0a 53 74 72 69 6e 67 69 66 69 65 73 h3>..Stringifies
fb90: 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 <code class=sch
fba0: 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d eme><span class=
fbb0: 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 65 78 70 variable><exp
fbc0: 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f r></span></co
fbd0: 64 65 3e 20 62 79 20 70 72 65 66 69 78 69 6e 67 de> by prefixing
fbe0: 20 74 68 65 20 23 20 6f 70 65 72 61 74 6f 72 2e the # operator.
fbf0: 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 63 70 70 2d 73 .<p>..<h3>(cpp-s
fc00: 79 6d 2d 63 61 74 20 26 6c 74 3b 61 72 67 73 26 ym-cat <args&
fc10: 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a 4a gt; ...)</h3>..J
fc20: 6f 69 6e 73 20 74 68 65 20 3c 63 6f 64 65 20 63 oins the <code c
fc30: 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 lass=scheme><spa
fc40: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
fc50: 3e 26 6c 74 3b 61 72 67 73 26 67 74 3b 3c 2f 73 ><args></s
fc60: 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 69 6e 74 6f pan></code> into
fc70: 20 61 20 73 69 6e 67 6c 65 20 70 72 65 70 72 6f a single prepro
fc80: 63 65 73 73 6f 72 20 74 6f 6b 65 6e 20 77 69 74 cessor token wit
fc90: 68 20 74 68 65 20 23 23 0a 6f 70 65 72 61 74 6f h the ##.operato
fca0: 72 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 63 70 70 r..<p>..<h3>(cpp
fcb0: 2d 77 72 61 70 2d 68 65 61 64 65 72 20 26 6c 74 -wrap-header <
fcc0: 3b 6e 61 6d 65 26 67 74 3b 20 26 6c 74 3b 62 6f ;name> <bo
fcd0: 64 79 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e dy> ...)</h3>
fce0: 0a 0a 57 72 61 70 20 61 6e 20 65 6e 74 69 72 65 ..Wrap an entire
fcf0: 20 68 65 61 64 65 72 20 74 6f 20 6f 6e 6c 79 20 header to only
fd00: 62 65 20 69 6e 63 6c 75 64 65 64 20 6f 6e 63 65 be included once
fd10: 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 4f 70 65 72 61 ..<p>..<h3>Opera
fd20: 74 6f 72 73 3a 3c 2f 68 33 3e 0a 0a 3c 70 72 65 tors:</h3>..<pre
fd30: 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 0a 3c class=scheme>.<
fd40: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
fd50: 62 6c 65 3e 63 2b 2b 3c 2f 73 70 61 6e 3e 20 3c ble>c++</span> <
fd60: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
fd70: 62 6c 65 3e 63 2d 2d 3c 2f 73 70 61 6e 3e 20 3c ble>c--</span> <
fd80: 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
fd90: 62 6c 65 3e 63 2b 3c 2f 73 70 61 6e 3e 20 3c 73 ble>c+</span> <s
fda0: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
fdb0: 6c 65 3e 63 2d 3c 2f 73 70 61 6e 3e 20 3c 73 70 le>c-</span> <sp
fdc0: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
fdd0: 65 3e 63 2a 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 e>c*</span> <spa
fde0: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
fdf0: 3e 63 2f 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e >c/</span> <span
fe00: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
fe10: 63 25 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 c%</span> <span
fe20: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 class=variable>c
fe30: 26 61 6d 70 3b 3c 2f 73 70 61 6e 3e 20 3c 73 70 &</span> <sp
fe40: 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
fe50: 65 3e 63 5e 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 e>c^</span> <spa
fe60: 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
fe70: 3e 63 7e 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e >c~</span> <span
fe80: 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
fe90: 63 21 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 c!</span> <span
fea0: 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 class=variable>c
feb0: 26 61 6d 70 3b 26 61 6d 70 3b 3c 2f 73 70 61 6e &&</span
fec0: 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 > <span class=va
fed0: 72 69 61 62 6c 65 3e 63 26 6c 74 3b 26 6c 74 3b riable>c<<
fee0: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
fef0: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 26 67 ass=variable>c&g
ff00: 74 3b 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73 t;></span> <s
ff10: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
ff20: 6c 65 3e 63 3d 3d 3c 2f 73 70 61 6e 3e 20 3c 73 le>c==</span> <s
ff30: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
ff40: 6c 65 3e 63 21 3d 3c 2f 73 70 61 6e 3e 0a 3c 73 le>c!=</span>.<s
ff50: 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
ff60: 6c 65 3e 63 26 6c 74 3b 3c 2f 73 70 61 6e 3e 20 le>c<</span>
ff70: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
ff80: 61 62 6c 65 3e 63 26 67 74 3b 3c 2f 73 70 61 6e able>c></span
ff90: 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 > <span class=va
ffa0: 72 69 61 62 6c 65 3e 63 26 6c 74 3b 3d 3c 2f 73 riable>c<=</s
ffb0: 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
ffc0: 3d 76 61 72 69 61 62 6c 65 3e 63 26 67 74 3b 3d =variable>c>=
ffd0: 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
ffe0: 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 3d 3c ass=variable>c=<
fff0: 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
10000 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 2b 3d 3c ss=variable>c+=<
10010 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
10020 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 2d 3d 3c ss=variable>c-=<
10030 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
10040 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 2a 3d 3c ss=variable>c*=<
10050 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
10060 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 2f 3d 3c ss=variable>c/=<
10070 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
10080 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 25 3d 3c ss=variable>c%=<
10090 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
100a0 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 26 61 6d ss=variable>c&am
100b0 70 3b 3d 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e p;=</span> <span
100c0 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
100d0 63 5e 3d 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e c^=</span> <span
100e0 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
100f0 63 26 6c 74 3b 26 6c 74 3b 3d 3c 2f 73 70 61 6e c<<=</span
10100 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 > <span class=va
10110 72 69 61 62 6c 65 3e 63 26 67 74 3b 26 67 74 3b riable>c>>
10120 3d 3c 2f 73 70 61 6e 3e 0a 3c 73 70 61 6e 20 63 =</span>.<span c
10130 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 2b lass=variable>c+
10140 2b 2f 70 6f 73 74 3c 2f 73 70 61 6e 3e 20 3c 73 +/post</span> <s
10150 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
10160 6c 65 3e 63 2d 2d 2f 70 6f 73 74 3c 2f 73 70 61 le>c--/post</spa
10170 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 n> <span class=v
10180 61 72 69 61 62 6c 65 3e 63 2d 6f 72 3c 2f 73 70 ariable>c-or</sp
10190 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
101a0 76 61 72 69 61 62 6c 65 3e 63 2d 62 69 74 2d 6f variable>c-bit-o
101b0 72 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 r</span> <span c
101c0 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 2d lass=variable>c-
101d0 62 69 74 2d 6f 72 3d 3c 2f 73 70 61 6e 3e 0a 3c bit-or=</span>.<
101e0 2f 70 72 65 3e 0a 3c 70 3e 0a 0a 3c 61 20 6e 61 /pre>.<p>..<a na
101f0 6d 65 3d 22 53 45 43 54 49 4f 4e 5f 36 2e 36 22 me="SECTION_6.6"
10200 3e 3c 68 32 3e 36 2e 36 26 6e 62 73 70 3b 26 6e ><h2>6.6 &n
10210 62 73 70 3b 43 20 54 79 70 65 73 3c 2f 68 32 3e bsp;C Types</h2>
10220 0a 0a 0a 3c 70 3e 0a 0a 54 79 70 69 63 61 6c 6c ...<p>..Typicall
10230 79 20 61 20 74 79 70 65 20 69 73 20 6a 75 73 74 y a type is just
10240 20 61 20 73 79 6d 62 6f 6c 20 73 75 63 68 20 61 a symbol such a
10250 73 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 s <code class=sc
10260 68 65 6d 65 3e 27 3c 73 70 61 6e 20 63 6c 61 73 heme>'<span clas
10270 73 3d 76 61 72 69 61 62 6c 65 3e 63 68 61 72 3c s=variable>char<
10280 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 6f 72 /span></code> or
10290 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 <code class=sch
102a0 65 6d 65 3e 27 3c 73 70 61 6e 20 63 6c 61 73 73 eme>'<span class
102b0 3d 76 61 72 69 61 62 6c 65 3e 69 6e 74 3c 2f 73 =variable>int</s
102c0 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2e 20 20 59 6f pan></code>. Yo
102d0 75 0a 63 61 6e 20 77 72 61 70 20 74 79 70 65 73 u.can wrap types
102e0 20 77 69 74 68 20 6d 6f 64 69 66 69 65 72 73 20 with modifiers
102f0 73 75 63 68 20 61 73 20 3c 63 6f 64 65 20 63 6c such as <code cl
10300 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e ass=scheme><span
10310 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
10320 63 2d 63 6f 6e 73 74 3c 2f 73 70 61 6e 3e 3c 2f c-const</span></
10330 63 6f 64 65 3e 2c 20 62 75 74 20 61 73 20 61 0a code>, but as a.
10340 63 6f 6e 76 65 6e 69 65 6e 63 65 20 79 6f 75 20 convenience you
10350 63 61 6e 20 6a 75 73 74 20 75 73 65 20 61 20 6c can just use a l
10360 69 73 74 20 73 75 63 68 20 61 73 20 69 6e 20 3c ist such as in <
10370 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
10380 65 3e 27 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d e>'(<span class=
10390 76 61 72 69 61 62 6c 65 3e 63 6f 6e 73 74 3c 2f variable>const</
103a0 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 span> <span clas
103b0 73 3d 76 61 72 69 61 62 6c 65 3e 75 6e 73 69 67 s=variable>unsig
103c0 6e 65 64 63 68 61 72 3c 2f 73 70 61 6e 3e 20 3c nedchar</span> <
103d0 73 70 61 6e 20 63 6c 61 73 73 3d 67 6c 6f 62 61 span class=globa
103e0 6c 3e 2a 3c 2f 73 70 61 6e 3e 29 3c 2f 63 6f 64 l>*</span>)</cod
103f0 65 3e 2e 0a 59 6f 75 20 63 61 6e 20 61 6c 73 6f e>..You can also
10400 20 6e 65 73 74 20 74 68 65 73 65 20 6c 69 73 74 nest these list
10410 73 2c 20 73 6f 20 74 68 65 20 70 72 65 76 69 6f s, so the previo
10420 75 73 20 65 78 61 6d 70 6c 65 20 69 73 0a 65 71 us example is.eq
10430 75 69 76 61 6c 65 6e 74 20 74 6f 20 3c 63 6f 64 uivalent to <cod
10440 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 27 e class=scheme>'
10450 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 67 6c 6f (<span class=glo
10460 62 61 6c 3e 2a 3c 2f 73 70 61 6e 3e 20 28 3c 73 bal>*</span> (<s
10470 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
10480 6c 65 3e 63 6f 6e 73 74 3c 2f 73 70 61 6e 3e 20 le>const</span>
10490 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 (<span class=var
104a0 69 61 62 6c 65 3e 75 6e 73 69 67 6e 65 64 3c 2f iable>unsigned</
104b0 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 span> <span clas
104c0 73 3d 76 61 72 69 61 62 6c 65 3e 63 68 61 72 3c s=variable>char<
104d0 2f 73 70 61 6e 3e 29 29 29 3c 2f 63 6f 64 65 3e /span>)))</code>
104e0 2e 0a 3c 70 3e 0a 0a 50 6f 69 6e 74 65 72 73 20 ..<p>..Pointers
104f0 6d 61 79 20 62 65 20 77 72 69 74 74 65 6e 20 61 may be written a
10500 73 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 s <code class=sc
10510 68 65 6d 65 3e 27 28 3c 73 70 61 6e 20 63 6c 61 heme>'(<span cla
10520 73 73 3d 76 61 72 69 61 62 6c 65 3e 25 70 6f 69 ss=variable>%poi
10530 6e 74 65 72 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 nter</span> <spa
10540 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
10550 3e 26 6c 74 3b 74 79 70 65 26 67 74 3b 3c 2f 73 ><type></s
10560 70 61 6e 3e 29 3c 2f 63 6f 64 65 3e 20 66 6f 72 pan>)</code> for
10570 20 72 65 61 64 61 62 69 6c 69 74 79 20 2d 0a 3c readability -.<
10580 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
10590 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
105a0 72 69 61 62 6c 65 3e 25 70 6f 69 6e 74 65 72 3c riable>%pointer<
105b0 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 69 73 /span></code> is
105c0 20 65 78 61 63 74 6c 79 20 65 71 75 69 76 61 6c exactly equival
105d0 65 6e 74 20 74 6f 20 3c 63 6f 64 65 20 63 6c 61 ent to <code cla
105e0 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 ss=scheme><span
105f0 63 6c 61 73 73 3d 67 6c 6f 62 61 6c 3e 2a 3c 2f class=global>*</
10600 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 69 6e 20 span></code> in
10610 74 79 70 65 73 2e 0a 3c 70 3e 0a 0a 55 6e 61 6d types..<p>..Unam
10620 65 64 20 73 74 72 75 63 74 73 2c 20 63 6c 61 73 ed structs, clas
10630 73 65 73 2c 20 75 6e 69 6f 6e 73 20 61 6e 64 20 ses, unions and
10640 65 6e 75 6d 73 20 6d 61 79 20 62 65 20 75 73 65 enums may be use
10650 64 20 64 69 72 65 63 74 6c 79 20 61 73 0a 74 79 d directly as.ty
10660 70 65 73 2c 20 75 73 69 6e 67 20 74 68 65 69 72 pes, using their
10670 20 72 65 73 70 65 63 74 69 76 65 20 6b 65 79 77 respective keyw
10680 6f 72 64 73 20 61 74 20 74 68 65 20 68 65 61 64 ords at the head
10690 20 6f 66 20 61 20 6c 69 73 74 2e 0a 3c 70 3e 0a of a list..<p>.
106a0 0a 54 77 6f 20 73 70 65 63 69 61 6c 20 74 79 70 .Two special typ
106b0 65 73 20 61 72 65 20 74 68 65 20 25 61 72 72 61 es are the %arra
106c0 79 20 74 79 70 65 20 61 6e 64 20 66 75 6e 63 74 y type and funct
106d0 69 6f 6e 20 70 6f 69 6e 74 65 72 20 74 79 70 65 ion pointer type
106e0 2e 20 20 41 6e 0a 61 72 72 61 79 20 69 73 20 77 . An.array is w
106f0 72 69 74 74 65 6e 3a 0a 3c 70 3e 0a 0a 3c 63 6f ritten:.<p>..<co
10700 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
10710 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 (<span class=var
10720 69 61 62 6c 65 3e 25 61 72 72 61 79 3c 2f 73 70 iable>%array</sp
10730 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
10740 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 74 79 70 variable><typ
10750 65 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 5b 3c 73 e></span> [<s
10760 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
10770 6c 65 3e 26 6c 74 3b 73 69 7a 65 26 67 74 3b 3c le><size><
10780 2f 73 70 61 6e 3e 5d 29 3c 2f 63 6f 64 65 3e 0a /span>])</code>.
10790 3c 70 3e 0a 0a 77 68 65 72 65 20 3c 63 6f 64 65 <p>..where <code
107a0 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
107b0 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
107c0 6c 65 3e 26 6c 74 3b 74 79 70 65 26 67 74 3b 3c le><type><
107d0 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 69 73 /span></code> is
107e0 20 61 6e 79 20 6f 74 68 65 72 20 74 79 70 65 20 any other type
107f0 28 69 6e 63 6c 75 64 69 6e 67 20 61 6e 6f 74 68 (including anoth
10800 65 72 20 61 72 72 61 79 20 6f 72 0a 66 75 6e 63 er array or.func
10810 74 69 6f 6e 20 70 6f 69 6e 74 65 72 29 2c 20 61 tion pointer), a
10820 6e 64 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 nd <code class=s
10830 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 cheme><span clas
10840 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 73 s=variable><s
10850 69 7a 65 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f ize></span></
10860 63 6f 64 65 3e 2c 20 69 66 20 67 69 76 65 6e 2c code>, if given,
10870 20 77 69 6c 6c 20 70 72 69 6e 74 20 74 68 65 20 will print the
10880 61 72 72 61 79 0a 73 69 7a 65 2e 20 20 46 6f 72 array.size. For
10890 20 65 78 61 6d 70 6c 65 3a 0a 3c 70 3e 0a 0a 3c example:.<p>..<
108a0 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
108b0 65 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 e>(<span class=v
108c0 61 72 69 61 62 6c 65 3e 63 2d 76 61 72 3c 2f 73 ariable>c-var</s
108d0 70 61 6e 3e 20 27 28 3c 73 70 61 6e 20 63 6c 61 pan> '(<span cla
108e0 73 73 3d 76 61 72 69 61 62 6c 65 3e 25 61 72 72 ss=variable>%arr
108f0 61 79 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e ay</span> (<span
10900 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
10910 75 6e 73 69 67 6e 65 64 3c 2f 73 70 61 6e 3e 20 unsigned</span>
10920 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
10930 61 62 6c 65 3e 6c 6f 6e 67 3c 2f 73 70 61 6e 3e able>long</span>
10940 29 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 ) <span class=va
10950 72 69 61 62 6c 65 3e 53 49 5a 45 3c 2f 73 70 61 riable>SIZE</spa
10960 6e 3e 29 20 27 3c 73 70 61 6e 20 63 6c 61 73 73 n>) '<span class
10970 3d 76 61 72 69 61 62 6c 65 3e 74 61 62 6c 65 3c =variable>table<
10980 2f 73 70 61 6e 3e 20 27 3c 73 70 61 6e 20 63 6c /span> '<span cl
10990 61 73 73 3d 63 6f 6e 73 74 61 6e 74 3e 23 3c 2f ass=constant>#</
109a0 73 70 61 6e 3e 28 3c 73 70 61 6e 20 63 6c 61 73 span>(<span clas
109b0 73 3d 6e 75 6d 62 65 72 3e 31 3c 2f 73 70 61 6e s=number>1</span
109c0 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 > <span class=nu
109d0 6d 62 65 72 3e 32 3c 2f 73 70 61 6e 3e 20 3c 73 mber>2</span> <s
109e0 70 61 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 pan class=number
109f0 3e 33 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 >3</span> <span
10a00 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 34 3c 2f class=number>4</
10a10 73 70 61 6e 3e 29 29 3c 2f 63 6f 64 65 3e 0a 3c span>))</code>.<
10a20 70 3e 0a 0a 3c 70 72 65 3e 0a 75 6e 73 69 67 6e p>..<pre>.unsign
10a30 65 64 20 6c 6f 6e 67 20 74 61 62 6c 65 5b 53 49 ed long table[SI
10a40 5a 45 5d 20 3d 20 7b 31 2c 20 32 2c 20 33 2c 20 ZE] = {1, 2, 3,
10a50 34 7d 3b 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 0a 4};.</pre>.<p>..
10a60 41 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 A function point
10a70 65 72 20 69 73 20 77 72 69 74 74 65 6e 3a 0a 3c er is written:.<
10a80 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d p>..<code class=
10a90 73 63 68 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c scheme>(<span cl
10aa0 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 25 66 75 ass=variable>%fu
10ab0 6e 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 n</span> <span c
10ac0 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c lass=variable>&l
10ad0 74 3b 72 65 74 75 72 6e 2d 74 79 70 65 26 67 74 t;return-type>
10ae0 3b 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e 20 ;</span> (<span
10af0 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 class=variable>&
10b00 6c 74 3b 70 61 72 61 6d 2d 74 79 70 65 73 26 67 lt;param-types&g
10b10 74 3b 3c 2f 73 70 61 6e 3e 20 2e 2e 2e 29 29 3c t;</span> ...))<
10b20 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 46 6f 72 20 /code>.<p>..For
10b30 65 78 61 6d 70 6c 65 3a 0a 3c 70 3e 0a 0a 3c 63 example:.<p>..<c
10b40 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
10b50 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 >(<span class=va
10b60 72 69 61 62 6c 65 3e 63 2d 74 79 70 65 64 65 66 riable>c-typedef
10b70 3c 2f 73 70 61 6e 3e 20 27 28 3c 73 70 61 6e 20 </span> '(<span
10b80 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 25 class=variable>%
10b90 66 75 6e 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e fun</span> <span
10ba0 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
10bb0 64 6f 75 62 6c 65 3c 2f 73 70 61 6e 3e 20 28 3c double</span> (<
10bc0 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
10bd0 62 6c 65 3e 64 6f 75 62 6c 65 3c 2f 73 70 61 6e ble>double</span
10be0 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 > <span class=va
10bf0 72 69 61 62 6c 65 3e 64 6f 75 62 6c 65 3c 2f 73 riable>double</s
10c00 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 pan> <span class
10c10 3d 76 61 72 69 61 62 6c 65 3e 69 6e 74 3c 2f 73 =variable>int</s
10c20 70 61 6e 3e 29 29 20 27 3c 73 70 61 6e 20 63 6c pan>)) '<span cl
10c30 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 3c 2f ass=variable>f</
10c40 73 70 61 6e 3e 29 3c 2f 63 6f 64 65 3e 0a 3c 70 span>)</code>.<p
10c50 3e 0a 0a 3c 70 72 65 3e 0a 74 79 70 65 64 65 66 >..<pre>.typedef
10c60 20 64 6f 75 62 6c 65 20 28 2a 66 29 28 64 6f 75 double (*f)(dou
10c70 62 6c 65 2c 20 64 6f 75 62 6c 65 2c 20 69 6e 74 ble, double, int
10c80 29 3b 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 0a 57 );.</pre>.<p>..W
10c90 68 65 72 65 76 65 72 20 61 20 74 79 70 65 20 69 herever a type i
10ca0 73 20 65 78 70 65 63 74 65 64 20 62 75 74 20 6e s expected but n
10cb0 6f 74 20 67 69 76 65 6e 2c 20 74 68 65 20 76 61 ot given, the va
10cc0 6c 75 65 20 6f 66 20 74 68 65 0a 3c 63 6f 64 65 lue of the.<code
10cd0 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 27 3c class=scheme>'<
10ce0 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
10cf0 62 6c 65 3e 64 65 66 61 75 6c 74 2d 74 79 70 65 ble>default-type
10d00 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 66 </span></code> f
10d10 6f 72 6d 61 74 74 69 6e 67 20 73 74 61 74 65 20 ormatting state
10d20 76 61 72 69 61 62 6c 65 20 69 73 20 75 73 65 64 variable is used
10d30 2e 20 20 42 79 20 64 65 66 61 75 6c 74 20 74 68 . By default th
10d40 69 73 0a 69 73 20 6a 75 73 74 20 3c 63 6f 64 65 is.is just <code
10d50 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 27 3c class=scheme>'<
10d60 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
10d70 62 6c 65 3e 69 6e 74 3c 2f 73 70 61 6e 3e 3c 2f ble>int</span></
10d80 63 6f 64 65 3e 2e 0a 3c 70 3e 0a 0a 54 79 70 65 code>..<p>..Type
10d90 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 77 6f declarations wo
10da0 72 6b 20 75 6e 69 66 6f 72 6d 6c 79 20 66 6f 72 rk uniformly for
10db0 20 76 61 72 69 61 62 6c 65 73 20 61 6e 64 20 70 variables and p
10dc0 61 72 61 6d 65 74 65 72 73 2c 20 61 73 20 77 65 arameters, as we
10dd0 6c 6c 0a 66 6f 72 20 63 61 73 74 73 20 61 6e 64 ll.for casts and
10de0 20 74 79 70 65 64 65 66 73 2e 0a 3c 70 3e 0a 0a typedefs..<p>..
10df0 3c 61 20 6e 61 6d 65 3d 22 53 45 43 54 49 4f 4e <a name="SECTION
10e00 5f 36 2e 37 22 3e 3c 68 32 3e 36 2e 37 26 6e 62 _6.7"><h2>6.7&nb
10e10 73 70 3b 26 6e 62 73 70 3b 43 20 61 73 20 53 2d sp; C as S-
10e20 45 78 70 72 65 73 73 69 6f 6e 73 3c 2f 68 32 3e Expressions</h2>
10e30 0a 0a 0a 3c 70 3e 0a 0a 52 61 74 68 65 72 20 74 ...<p>..Rather t
10e40 68 61 6e 20 62 75 69 6c 64 69 6e 67 20 66 6f 72 han building for
10e50 6d 61 74 74 69 6e 67 20 63 6c 6f 73 75 72 65 73 matting closures
10e60 20 62 79 20 68 61 6e 64 2c 20 69 74 20 63 61 6e by hand, it can
10e70 20 62 65 20 6d 6f 72 65 0a 63 6f 6e 76 65 6e 69 be more.conveni
10e80 65 6e 74 20 74 6f 20 6a 75 73 74 20 62 75 69 6c ent to just buil
10e90 64 20 61 20 6e 6f 72 6d 61 6c 20 73 2d 65 78 70 d a normal s-exp
10ea0 72 65 73 73 69 6f 6e 20 61 6e 64 20 61 73 6b 20 ression and ask
10eb0 66 6f 72 20 69 74 20 74 6f 20 62 65 0a 66 6f 72 for it to be.for
10ec0 6d 61 74 74 65 64 20 61 73 20 43 20 63 6f 64 65 matted as C code
10ed0 2e 20 20 54 68 69 73 20 63 61 6e 20 62 65 20 74 . This can be t
10ee0 68 6f 75 67 68 74 20 6f 66 20 61 73 20 61 20 73 hought of as a s
10ef0 69 6d 70 6c 65 20 53 63 68 65 6d 65 2d 26 67 74 imple Scheme->
10f00 3b 43 0a 63 6f 6d 70 69 6c 65 72 20 77 69 74 68 ;C.compiler with
10f10 6f 75 74 20 61 6e 79 20 72 75 6e 74 69 6d 65 20 out any runtime
10f20 73 75 70 70 6f 72 74 2e 0a 3c 70 3e 0a 0a 49 6e support..<p>..In
10f30 20 61 20 73 2d 65 78 70 72 65 73 73 69 6f 6e 2c a s-expression,
10f40 20 73 74 72 69 6e 67 73 20 61 6e 64 20 63 68 61 strings and cha
10f50 72 61 63 74 65 72 73 20 61 72 65 20 70 72 69 6e racters are prin
10f60 74 65 64 20 61 73 20 43 20 73 74 72 69 6e 67 73 ted as C strings
10f70 20 61 6e 64 0a 63 68 61 72 61 63 74 65 72 73 2c and.characters,
10f80 20 62 6f 6f 6c 65 61 6e 73 20 61 72 65 20 70 72 booleans are pr
10f90 69 6e 74 65 64 20 61 73 20 30 20 6f 72 20 31 2c inted as 0 or 1,
10fa0 20 73 79 6d 62 6f 6c 73 20 61 72 65 20 64 69 73 symbols are dis
10fb0 70 6c 61 79 65 64 0a 61 73 2d 69 73 2c 20 61 6e played.as-is, an
10fc0 64 20 6e 75 6d 62 65 72 73 20 61 72 65 20 70 72 d numbers are pr
10fd0 69 6e 74 65 64 20 61 73 20 43 20 6e 75 6d 62 65 inted as C numbe
10fe0 72 73 20 28 75 73 69 6e 67 20 74 68 65 20 63 75 rs (using the cu
10ff0 72 72 65 6e 74 0a 66 6f 72 6d 61 74 74 69 6e 67 rrent.formatting
11000 20 72 61 64 69 78 20 69 66 20 73 70 65 63 69 66 radix if specif
11010 69 65 64 29 2e 20 20 56 65 63 74 6f 72 73 20 61 ied). Vectors a
11020 72 65 20 70 72 69 6e 74 65 64 20 61 73 0a 63 6f re printed as.co
11030 6d 6d 61 2d 73 65 70 61 72 61 74 65 64 20 6c 69 mma-separated li
11040 73 74 73 20 77 72 61 70 70 65 64 20 69 6e 20 62 sts wrapped in b
11050 72 61 63 65 73 2c 20 77 68 69 63 68 20 63 61 6e races, which can
11060 20 62 65 20 75 73 65 64 20 66 6f 72 0a 69 6e 69 be used for.ini
11070 74 69 61 6c 69 7a 69 6e 67 20 61 72 72 61 79 73 tializing arrays
11080 20 6f 72 20 73 74 72 75 63 74 73 2e 0a 3c 70 3e or structs..<p>
11090 0a 0a 41 20 6c 69 73 74 20 69 6e 64 69 63 61 74 ..A list indicat
110a0 65 73 20 61 20 43 20 65 78 70 72 65 73 73 69 6f es a C expressio
110b0 6e 20 6f 72 20 73 74 61 74 65 6d 65 6e 74 2e 20 n or statement.
110c0 20 41 6e 79 20 6f 66 20 74 68 65 20 65 78 69 73 Any of the exis
110d0 74 69 6e 67 20 43 0a 6b 65 79 77 6f 72 64 73 20 ting C.keywords
110e0 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 70 can be used to p
110f0 72 65 74 74 79 2d 70 72 69 6e 74 20 74 68 65 20 retty-print the
11100 65 78 70 72 65 73 73 69 6f 6e 20 61 73 20 64 65 expression as de
11110 73 63 72 69 62 65 64 20 77 69 74 68 0a 74 68 65 scribed with.the
11120 20 63 2d 6b 65 79 77 6f 72 64 20 66 6f 72 6d 61 c-keyword forma
11130 74 74 65 72 73 20 61 62 6f 76 65 2e 20 20 54 68 tters above. Th
11140 75 73 2c 20 74 68 65 20 65 78 61 6d 70 6c 65 20 us, the example
11150 61 62 6f 76 65 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 above.<p>..<code
11160 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 28 3c class=scheme>(<
11170 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
11180 62 6c 65 3e 66 6d 74 3c 2f 73 70 61 6e 3e 20 3c ble>fmt</span> <
11190 73 70 61 6e 20 63 6c 61 73 73 3d 62 6f 6f 6c 65 span class=boole
111a0 61 6e 3e 23 74 3c 2f 73 70 61 6e 3e 20 28 3c 73 an>#t</span> (<s
111b0 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
111c0 6c 65 3e 63 2d 69 66 3c 2f 73 70 61 6e 3e 20 28 le>c-if</span> (
111d0 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
111e0 61 62 6c 65 3e 63 2d 69 66 3c 2f 73 70 61 6e 3e able>c-if</span>
111f0 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 6d <span class=num
11200 62 65 72 3e 31 3c 2f 73 70 61 6e 3e 20 3c 73 70 ber>1</span> <sp
11210 61 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e an class=number>
11220 32 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 2</span> <span c
11230 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 33 3c 2f 73 lass=number>3</s
11240 70 61 6e 3e 29 20 3c 73 70 61 6e 20 63 6c 61 73 pan>) <span clas
11250 73 3d 6e 75 6d 62 65 72 3e 34 3c 2f 73 70 61 6e s=number>4</span
11260 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 > <span class=nu
11270 6d 62 65 72 3e 35 3c 2f 73 70 61 6e 3e 29 29 3c mber>5</span>))<
11280 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 63 6f 75 6c /code>.<p>..coul
11290 64 20 61 6c 73 6f 20 62 65 20 77 72 69 74 74 65 d also be writte
112a0 6e 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c 61 n.<p>..<code cla
112b0 73 73 3d 73 63 68 65 6d 65 3e 28 3c 73 70 61 6e ss=scheme>(<span
112c0 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
112d0 66 6d 74 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e fmt</span> <span
112e0 20 63 6c 61 73 73 3d 62 6f 6f 6c 65 61 6e 3e 23 class=boolean>#
112f0 74 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 61 6e 20 t</span> (<span
11300 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 63 class=variable>c
11310 2d 65 78 70 72 3c 2f 73 70 61 6e 3e 20 27 28 3c -expr</span> '(<
11320 73 70 61 6e 20 63 6c 61 73 73 3d 6b 65 79 77 6f span class=keywo
11330 72 64 3e 69 66 3c 2f 73 70 61 6e 3e 20 28 3c 73 rd>if</span> (<s
11340 70 61 6e 20 63 6c 61 73 73 3d 6b 65 79 77 6f 72 pan class=keywor
11350 64 3e 69 66 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 d>if</span> <spa
11360 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 31 n class=number>1
11370 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
11380 61 73 73 3d 6e 75 6d 62 65 72 3e 32 3c 2f 73 70 ass=number>2</sp
11390 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
113a0 6e 75 6d 62 65 72 3e 33 3c 2f 73 70 61 6e 3e 29 number>3</span>)
113b0 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 6d <span class=num
113c0 62 65 72 3e 34 3c 2f 73 70 61 6e 3e 20 3c 73 70 ber>4</span> <sp
113d0 61 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e an class=number>
113e0 35 3c 2f 73 70 61 6e 3e 29 29 29 3c 2f 63 6f 64 5</span>)))</cod
113f0 65 3e 0a 3c 70 3e 0a 0a 43 20 63 6f 6e 73 74 72 e>.<p>..C constr
11400 75 63 74 73 20 74 68 61 74 20 61 72 65 20 64 65 ucts that are de
11410 70 65 6e 64 65 6e 74 20 6f 6e 20 74 68 65 20 75 pendent on the u
11420 6e 64 65 72 6c 79 69 6e 67 20 73 79 6e 74 61 78 nderlying syntax
11430 20 61 6e 64 20 68 61 76 65 20 6e 6f 0a 6b 65 79 and have no.key
11440 77 6f 72 64 20 61 72 65 20 77 72 69 74 74 65 6e word are written
11450 20 77 69 74 68 20 61 20 25 20 70 72 65 66 69 78 with a % prefix
11460 20 28 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 (<code class=sc
11470 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 heme><span class
11480 3d 76 61 72 69 61 62 6c 65 3e 25 66 75 6e 3c 2f =variable>%fun</
11490 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 3c 63 span></code>, <c
114a0 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
114b0 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 ><span class=var
114c0 69 61 62 6c 65 3e 25 76 61 72 3c 2f 73 70 61 6e iable>%var</span
114d0 3e 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 20 ></code>, <code
114e0 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
114f0 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
11500 65 3e 25 70 6f 69 6e 74 65 72 3c 2f 73 70 61 6e e>%pointer</span
11510 3e 3c 2f 63 6f 64 65 3e 2c 0a 3c 63 6f 64 65 20 ></code>,.<code
11520 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
11530 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
11540 65 3e 25 61 72 72 61 79 3c 2f 73 70 61 6e 3e 3c e>%array</span><
11550 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 20 63 6c /code>, <code cl
11560 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e ass=scheme><span
11570 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
11580 25 63 61 73 74 3c 2f 73 70 61 6e 3e 3c 2f 63 6f %cast</span></co
11590 64 65 3e 29 2c 20 69 6e 63 6c 75 64 69 6e 67 20 de>), including
115a0 43 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20 63 C preprocessor c
115b0 6f 6e 73 74 72 75 63 74 73 0a 28 3c 63 6f 64 65 onstructs.(<code
115c0 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
115d0 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
115e0 6c 65 3e 25 69 6e 63 6c 75 64 65 3c 2f 73 70 61 le>%include</spa
115f0 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 n></code>, <code
11600 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
11610 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
11620 6c 65 3e 25 64 65 66 69 6e 65 3c 2f 73 70 61 6e le>%define</span
11630 3e 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 20 ></code>, <code
11640 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 class=scheme><sp
11650 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
11660 65 3e 25 70 72 61 67 6d 61 3c 2f 73 70 61 6e 3e e>%pragma</span>
11670 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 20 63 </code>, <code c
11680 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 lass=scheme><spa
11690 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
116a0 3e 25 65 72 72 6f 72 3c 2f 73 70 61 6e 3e 3c 2f >%error</span></
116b0 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 20 63 6c 61 code>, <code cla
116c0 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 ss=scheme><span
116d0 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 25 class=variable>%
116e0 77 61 72 6e 69 6e 67 3c 2f 73 70 61 6e 3e 3c 2f warning</span></
116f0 63 6f 64 65 3e 2c 0a 3c 63 6f 64 65 20 63 6c 61 code>,.<code cla
11700 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 ss=scheme><span
11710 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 25 class=variable>%
11720 69 66 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e if</span></code>
11730 2c 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 , <code class=sc
11740 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 heme><span class
11750 3d 76 61 72 69 61 62 6c 65 3e 25 69 66 64 65 66 =variable>%ifdef
11760 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 </span></code>,
11770 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
11780 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 me><span class=v
11790 61 72 69 61 62 6c 65 3e 25 69 66 6e 64 65 66 3c ariable>%ifndef<
117a0 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2c 20 3c /span></code>, <
117b0 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
117c0 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
117d0 72 69 61 62 6c 65 3e 25 65 6c 69 66 3c 2f 73 70 riable>%elif</sp
117e0 61 6e 3e 3c 2f 63 6f 64 65 3e 29 2e 20 20 4c 61 an></code>). La
117f0 62 65 6c 73 20 61 72 65 20 77 72 69 74 74 65 6e bels are written
11800 20 61 73 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d as.<code class=
11810 73 63 68 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c scheme>(<span cl
11820 61 73 73 3d 63 6f 6e 73 74 61 6e 74 3e 3a 3c 2f ass=constant>:</
11830 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 span> <span clas
11840 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 6c s=variable><l
11850 61 62 65 6c 2d 6e 61 6d 65 26 67 74 3b 3c 2f 73 abel-name></s
11860 70 61 6e 3e 29 3c 2f 63 6f 64 65 3e 2e 20 20 59 pan>)</code>. Y
11870 6f 75 20 63 61 6e 20 77 72 69 74 65 20 61 20 73 ou can write a s
11880 65 71 75 65 6e 63 65 20 61 73 20 3c 63 6f 64 65 equence as <code
11890 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 28 3c class=scheme>(<
118a0 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
118b0 62 6c 65 3e 25 62 65 67 69 6e 3c 2f 73 70 61 6e ble>%begin</span
118c0 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 > <span class=va
118d0 72 69 61 62 6c 65 3e 26 6c 74 3b 65 78 70 72 26 riable><expr&
118e0 67 74 3b 3c 2f 73 70 61 6e 3e 0a 2e 2e 2e 29 3c gt;</span>....)<
118f0 2f 63 6f 64 65 3e 2e 0a 3c 70 3e 0a 0a 46 6f 72 /code>..<p>..For
11900 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 66 6f example, the fo
11910 6c 6c 6f 77 69 6e 67 20 64 65 66 69 6e 69 74 69 llowing definiti
11920 6f 6e 20 6f 66 20 74 68 65 20 66 69 62 6f 6e 61 on of the fibona
11930 63 63 69 20 73 65 71 75 65 6e 63 65 2c 20 77 68 cci sequence, wh
11940 69 63 68 0a 61 70 61 72 74 20 66 72 6f 6d 20 74 ich.apart from t
11950 68 65 20 72 65 74 75 72 6e 20 74 79 70 65 20 6f he return type o
11960 66 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 f <code class=sc
11970 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 heme><span class
11980 3d 62 6f 6f 6c 65 61 6e 3e 23 66 3c 2f 73 70 61 =boolean>#f</spa
11990 6e 3e 3c 2f 63 6f 64 65 3e 20 6c 6f 6f 6b 73 20 n></code> looks
119a0 6c 69 6b 65 20 61 20 4c 69 73 70 20 64 65 66 69 like a Lisp defi
119b0 6e 69 74 69 6f 6e 3a 0a 3c 70 3e 0a 0a 3c 63 6f nition:.<p>..<co
119c0 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
119d0 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 (<span class=var
119e0 69 61 62 6c 65 3e 66 6d 74 3c 2f 73 70 61 6e 3e iable>fmt</span>
119f0 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 62 6f 6f <span class=boo
11a00 6c 65 61 6e 3e 23 74 3c 2f 73 70 61 6e 3e 20 28 lean>#t</span> (
11a10 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
11a20 61 62 6c 65 3e 63 2d 65 78 70 72 3c 2f 73 70 61 able>c-expr</spa
11a30 6e 3e 20 27 28 3c 73 70 61 6e 20 63 6c 61 73 73 n> '(<span class
11a40 3d 76 61 72 69 61 62 6c 65 3e 25 66 75 6e 3c 2f =variable>%fun</
11a50 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 span> <span clas
11a60 73 3d 62 6f 6f 6c 65 61 6e 3e 23 66 3c 2f 73 70 s=boolean>#f</sp
11a70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
11a80 76 61 72 69 61 62 6c 65 3e 66 69 62 3c 2f 73 70 variable>fib</sp
11a90 61 6e 3e 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 an> (<span class
11aa0 3d 76 61 72 69 61 62 6c 65 3e 6e 3c 2f 73 70 61 =variable>n</spa
11ab0 6e 3e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 n>).
11ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3c 73 (<s
11ad0 70 61 6e 20 63 6c 61 73 73 3d 6b 65 79 77 6f 72 pan class=keywor
11ae0 64 3e 69 66 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 d>if</span> (<sp
11af0 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
11b00 65 3e 26 6c 74 3b 3d 3c 2f 73 70 61 6e 3e 20 3c e><=</span> <
11b10 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
11b20 62 6c 65 3e 6e 3c 2f 73 70 61 6e 3e 20 3c 73 70 ble>n</span> <sp
11b30 61 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e an class=number>
11b40 31 3c 2f 73 70 61 6e 3e 29 0a 20 20 20 20 20 20 1</span>).
11b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11b60 20 20 20 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 <span cla
11b70 73 73 3d 6e 75 6d 62 65 72 3e 31 3c 2f 73 70 61 ss=number>1</spa
11b80 6e 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 n>.
11b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11ba0 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 (<span class=var
11bb0 69 61 62 6c 65 3e 2b 3c 2f 73 70 61 6e 3e 20 28 iable>+</span> (
11bc0 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
11bd0 61 62 6c 65 3e 66 69 62 3c 2f 73 70 61 6e 3e 20 able>fib</span>
11be0 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 (<span class=var
11bf0 69 61 62 6c 65 3e 2d 3c 2f 73 70 61 6e 3e 20 3c iable>-</span> <
11c00 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 span class=varia
11c10 62 6c 65 3e 6e 3c 2f 73 70 61 6e 3e 20 3c 73 70 ble>n</span> <sp
11c20 61 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e an class=number>
11c30 31 3c 2f 73 70 61 6e 3e 29 29 20 28 3c 73 70 61 1</span>)) (<spa
11c40 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
11c50 3e 66 69 62 3c 2f 73 70 61 6e 3e 20 28 3c 73 70 >fib</span> (<sp
11c60 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
11c70 65 3e 2d 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e e>-</span> <span
11c80 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
11c90 6e 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 n</span> <span c
11ca0 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 32 3c 2f 73 lass=number>2</s
11cb0 70 61 6e 3e 29 29 29 29 29 29 29 3c 2f 63 6f 64 pan>)))))))</cod
11cc0 65 3e 0a 3c 70 3e 0a 0a 70 72 69 6e 74 73 20 74 e>.<p>..prints t
11cd0 68 65 20 77 6f 72 6b 69 6e 67 20 43 20 64 65 66 he working C def
11ce0 69 6e 69 74 69 6f 6e 3a 0a 3c 70 3e 0a 0a 3c 70 inition:.<p>..<p
11cf0 72 65 3e 0a 69 6e 74 20 66 69 62 20 28 69 6e 74 re>.int fib (int
11d00 20 6e 29 20 7b 0a 20 20 20 20 69 66 20 28 6e 20 n) {. if (n
11d10 26 6c 74 3b 3d 20 31 29 20 7b 0a 20 20 20 20 20 <= 1) {.
11d20 20 20 20 72 65 74 75 72 6e 20 31 3b 0a 20 20 20 return 1;.
11d30 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 } else {.
11d40 20 20 72 65 74 75 72 6e 20 66 69 62 28 28 6e 20 return fib((n
11d50 2d 20 31 29 29 20 2b 20 66 69 62 28 28 6e 20 2d - 1)) + fib((n -
11d60 20 32 29 29 3b 0a 20 20 20 20 7d 0a 7d 0a 3c 2f 2));. }.}.</
11d70 70 72 65 3e 0a 3c 70 3e 0a 0a 3c 61 20 6e 61 6d pre>.<p>..<a nam
11d80 65 3d 22 53 45 43 54 49 4f 4e 5f 37 22 3e 3c 68 e="SECTION_7"><h
11d90 31 3e 37 26 6e 62 73 70 3b 26 6e 62 73 70 3b 4a 1>7 J
11da0 61 76 61 53 63 72 69 70 74 20 46 6f 72 6d 61 74 avaScript Format
11db0 74 69 6e 67 3c 2f 68 31 3e 0a 0a 54 68 65 20 65 ting</h1>..The e
11dc0 78 70 65 72 69 6d 65 6e 74 61 6c 20 66 6d 74 2d xperimental fmt-
11dd0 6a 73 20 6c 69 62 72 61 72 79 20 65 78 74 65 6e js library exten
11de0 64 73 20 74 68 65 20 66 6d 74 2d 63 20 6c 69 62 ds the fmt-c lib
11df0 72 61 72 79 20 77 69 74 68 0a 66 75 6e 63 74 69 rary with.functi
11e00 6f 6e 61 6c 69 74 79 20 66 6f 72 20 66 6f 72 6d onality for form
11e10 61 74 74 69 6e 67 20 4a 61 76 61 53 63 72 69 70 atting JavaScrip
11e20 74 20 63 6f 64 65 2e 0a 3c 70 3e 0a 0a 3c 68 33 t code..<p>..<h3
11e30 3e 28 6a 73 2d 65 78 70 72 20 78 29 3c 2f 68 33 >(js-expr x)</h3
11e40 3e 0a 0a 46 6f 72 6d 61 74 73 20 61 20 4a 61 76 >..Formats a Jav
11e50 61 53 63 72 69 70 74 20 65 78 70 72 65 73 73 69 aScript expressi
11e60 6f 6e 20 73 69 6d 69 6c 61 72 6c 79 20 74 6f 20 on similarly to
11e70 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
11e80 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 me><span class=v
11e90 61 72 69 61 62 6c 65 3e 63 2d 65 78 70 72 3c 2f ariable>c-expr</
11ea0 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 2e 20 20 49 span></code>. I
11eb0 6e 73 69 64 65 20 61 0a 3c 63 6f 64 65 20 63 6c nside a.<code cl
11ec0 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e ass=scheme><span
11ed0 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
11ee0 6a 73 2d 65 78 70 72 3c 2f 73 70 61 6e 3e 3c 2f js-expr</span></
11ef0 63 6f 64 65 3e 20 66 6f 72 6d 61 74 74 65 72 2c code> formatter,
11f00 20 79 6f 75 20 63 61 6e 20 75 73 65 20 74 68 65 you can use the
11f10 20 6e 6f 72 6d 61 6c 20 3c 63 6f 64 65 20 63 6c normal <code cl
11f20 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e ass=scheme><span
11f30 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
11f40 63 2d 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e c-</span></code>
11f50 20 70 72 65 66 69 78 65 64 0a 66 6f 72 6d 61 74 prefixed.format
11f60 74 65 72 73 20 64 65 73 63 72 69 62 65 64 20 69 ters described i
11f70 6e 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 73 n the previous s
11f80 65 63 74 69 6f 6e 2c 20 61 6e 64 20 74 68 65 79 ection, and they
11f90 20 77 69 6c 6c 20 66 6f 72 6d 61 74 0a 61 70 70 will format.app
11fa0 72 6f 70 72 69 61 74 65 6c 79 20 66 6f 72 20 4a ropriately for J
11fb0 61 76 61 53 63 72 69 70 74 2e 0a 3c 70 3e 0a 0a avaScript..<p>..
11fc0 43 75 72 72 65 6e 74 6c 79 20 65 78 70 72 65 73 Currently expres
11fd0 73 69 6f 6e 73 20 77 69 6c 6c 20 61 6c 6c 20 62 sions will all b
11fe0 65 20 74 65 72 6d 69 6e 61 74 65 64 20 77 69 74 e terminated wit
11ff0 68 20 61 20 73 65 6d 69 2d 63 6f 6c 6f 6e 2c 20 h a semi-colon,
12000 62 75 74 0a 74 68 61 74 20 77 69 6c 6c 20 62 65 but.that will be
12010 20 6d 61 64 65 20 6f 70 74 69 6f 6e 61 6c 20 69 made optional i
12020 6e 20 61 20 6c 61 74 65 72 20 72 65 6c 65 61 73 n a later releas
12030 65 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 6a 73 2d e..<p>..<h3>(js-
12040 66 75 6e 63 74 69 6f 6e 20 5b 26 6c 74 3b 6e 61 function [<na
12050 6d 65 26 67 74 3b 5d 20 28 26 6c 74 3b 70 61 72 me>] (<par
12060 61 6d 73 26 67 74 3b 29 20 26 6c 74 3b 62 6f 64 ams>) <bod
12070 79 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e 0a y> ...)</h3>.
12080 0a 44 65 66 69 6e 65 73 20 61 20 66 75 6e 63 74 .Defines a funct
12090 69 6f 6e 20 28 61 6e 6f 6e 79 6d 6f 75 73 6c 79 ion (anonymously
120a0 20 69 66 20 6e 6f 20 6e 61 6d 65 20 69 73 20 70 if no name is p
120b0 72 6f 76 69 64 65 64 29 2e 0a 3c 70 3e 0a 0a 3c rovided)..<p>..<
120c0 68 33 3e 28 6a 73 2d 76 61 72 20 26 6c 74 3b 6e h3>(js-var <n
120d0 61 6d 65 26 67 74 3b 20 5b 26 6c 74 3b 69 6e 69 ame> [<ini
120e0 74 2d 76 61 6c 75 65 26 67 74 3b 5d 29 3c 2f 68 t-value>])</h
120f0 33 3e 0a 0a 44 65 63 6c 61 72 65 73 20 61 20 4a 3>..Declares a J
12100 61 76 61 53 63 72 69 70 74 20 76 61 72 69 61 62 avaScript variab
12110 6c 65 2c 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 77 le, optionally w
12120 69 74 68 20 61 6e 20 69 6e 69 74 69 61 6c 20 76 ith an initial v
12130 61 6c 75 65 2e 0a 3c 70 3e 0a 0a 3c 68 33 3e 28 alue..<p>..<h3>(
12140 6a 73 2d 63 6f 6d 6d 65 6e 74 20 26 6c 74 3b 66 js-comment <f
12150 6f 72 6d 61 74 74 65 72 26 67 74 3b 20 2e 2e 2e ormatter> ...
12160 29 3c 2f 68 33 3e 0a 0a 46 6f 72 6d 61 74 73 20 )</h3>..Formats
12170 61 20 63 6f 6d 6d 65 6e 74 20 70 72 65 66 69 78 a comment prefix
12180 69 6e 67 20 6c 69 6e 65 73 20 77 69 74 68 20 3c ing lines with <
12190 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
121a0 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 73 74 e><span class=st
121b0 72 69 6e 67 3e 26 71 75 6f 74 3b 2f 2f 20 26 71 ring>"// &q
121c0 75 6f 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 uot;</span></cod
121d0 65 3e 2e 0a 3c 70 3e 0a 0a 3c 61 20 6e 61 6d 65 e>..<p>..<a name
121e0 3d 22 53 45 43 54 49 4f 4e 5f 38 22 3e 3c 68 31 ="SECTION_8"><h1
121f0 3e 38 26 6e 62 73 70 3b 26 6e 62 73 70 3b 46 6f >8 Fo
12200 72 6d 61 74 74 69 6e 67 20 77 69 74 68 20 43 6f rmatting with Co
12210 6c 6f 72 3c 2f 68 31 3e 0a 0a 54 68 65 20 66 6d lor</h1>..The fm
12220 74 2d 63 6f 6c 6f 72 20 6c 69 62 72 61 72 79 20 t-color library
12230 70 72 6f 76 69 64 65 73 20 74 68 65 20 66 6f 6c provides the fol
12240 6c 6f 77 69 6e 67 20 75 74 69 6c 69 74 69 65 73 lowing utilities
12250 3a 0a 3c 70 3e 0a 0a 3c 70 72 65 20 63 6c 61 73 :.<p>..<pre clas
12260 73 3d 73 63 68 65 6d 65 3e 0a 20 20 28 3c 73 70 s=scheme>. (<sp
12270 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
12280 65 3e 66 6d 74 2d 72 65 64 3c 2f 73 70 61 6e 3e e>fmt-red</span>
12290 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 <span class=var
122a0 69 61 62 6c 65 3e 26 6c 74 3b 66 6f 72 6d 61 74 iable><format
122b0 74 65 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 2e ter></span> .
122c0 2e 2e 29 0a 20 20 28 3c 73 70 61 6e 20 63 6c 61 ..). (<span cla
122d0 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 2d ss=variable>fmt-
122e0 62 6c 75 65 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 blue</span> <spa
122f0 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
12300 3e 26 6c 74 3b 66 6f 72 6d 61 74 74 65 72 26 67 ><formatter&g
12310 74 3b 3c 2f 73 70 61 6e 3e 20 2e 2e 2e 29 0a 20 t;</span> ...).
12320 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 (<span class=va
12330 72 69 61 62 6c 65 3e 66 6d 74 2d 67 72 65 65 6e riable>fmt-green
12340 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
12350 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 ass=variable><
12360 3b 66 6f 72 6d 61 74 74 65 72 26 67 74 3b 3c 2f ;formatter></
12370 73 70 61 6e 3e 20 2e 2e 2e 29 0a 20 20 28 3c 73 span> ...). (<s
12380 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
12390 6c 65 3e 66 6d 74 2d 63 79 61 6e 3c 2f 73 70 61 le>fmt-cyan</spa
123a0 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 n> <span class=v
123b0 61 72 69 61 62 6c 65 3e 26 6c 74 3b 66 6f 72 6d ariable><form
123c0 61 74 74 65 72 26 67 74 3b 3c 2f 73 70 61 6e 3e atter></span>
123d0 20 2e 2e 2e 29 0a 20 20 28 3c 73 70 61 6e 20 63 ...). (<span c
123e0 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d lass=variable>fm
123f0 74 2d 79 65 6c 6c 6f 77 3c 2f 73 70 61 6e 3e 20 t-yellow</span>
12400 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
12410 61 62 6c 65 3e 26 6c 74 3b 66 6f 72 6d 61 74 74 able><formatt
12420 65 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 2e 2e er></span> ..
12430 2e 29 0a 20 20 28 3c 73 70 61 6e 20 63 6c 61 73 .). (<span clas
12440 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 2d 6d s=variable>fmt-m
12450 61 67 65 6e 74 61 3c 2f 73 70 61 6e 3e 20 3c 73 agenta</span> <s
12460 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
12470 6c 65 3e 26 6c 74 3b 66 6f 72 6d 61 74 74 65 72 le><formatter
12480 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 2e 2e 2e 29 ></span> ...)
12490 0a 20 20 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d . (<span class=
124a0 76 61 72 69 61 62 6c 65 3e 66 6d 74 2d 77 68 69 variable>fmt-whi
124b0 74 65 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 te</span> <span
124c0 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 class=variable>&
124d0 6c 74 3b 66 6f 72 6d 61 74 74 65 72 26 67 74 3b lt;formatter>
124e0 3c 2f 73 70 61 6e 3e 20 2e 2e 2e 29 0a 20 20 28 </span> ...). (
124f0 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
12500 61 62 6c 65 3e 66 6d 74 2d 62 6c 61 63 6b 3c 2f able>fmt-black</
12510 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 span> <span clas
12520 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 66 s=variable><f
12530 6f 72 6d 61 74 74 65 72 26 67 74 3b 3c 2f 73 70 ormatter></sp
12540 61 6e 3e 20 2e 2e 2e 29 0a 20 20 28 3c 73 70 61 an> ...). (<spa
12550 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
12560 3e 66 6d 74 2d 62 6f 6c 64 3c 2f 73 70 61 6e 3e >fmt-bold</span>
12570 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 <span class=var
12580 69 61 62 6c 65 3e 26 6c 74 3b 66 6f 72 6d 61 74 iable><format
12590 74 65 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 2e ter></span> .
125a0 2e 2e 29 0a 20 20 28 3c 73 70 61 6e 20 63 6c 61 ..). (<span cla
125b0 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 2d ss=variable>fmt-
125c0 75 6e 64 65 72 6c 69 6e 65 3c 2f 73 70 61 6e 3e underline</span>
125d0 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 <span class=var
125e0 69 61 62 6c 65 3e 26 6c 74 3b 66 6f 72 6d 61 74 iable><format
125f0 74 65 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 2e ter></span> .
12600 2e 2e 29 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a 0a ..).</pre>.<p>..
12610 61 6e 64 20 6d 6f 72 65 20 67 65 6e 65 72 61 6c and more general
12620 6c 79 0a 3c 70 3e 0a 0a 3c 63 6f 64 65 20 63 6c ly.<p>..<code cl
12630 61 73 73 3d 73 63 68 65 6d 65 3e 28 3c 73 70 61 ass=scheme>(<spa
12640 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
12650 3e 66 6d 74 2d 63 6f 6c 6f 72 3c 2f 73 70 61 6e >fmt-color</span
12660 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 > <span class=va
12670 72 69 61 62 6c 65 3e 26 6c 74 3b 63 6f 6c 6f 72 riable><color
12680 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 ></span> <spa
12690 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
126a0 3e 26 6c 74 3b 66 6f 72 6d 61 74 74 65 72 26 67 ><formatter&g
126b0 74 3b 3c 2f 73 70 61 6e 3e 20 2e 2e 2e 29 3c 2f t;</span> ...)</
126c0 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 77 68 65 72 65 code>.<p>..where
126d0 20 63 6f 6c 6f 72 20 63 61 6e 20 62 65 20 61 20 color can be a
126e0 73 79 6d 62 6f 6c 20 6e 61 6d 65 20 6f 72 20 3c symbol name or <
126f0 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
12700 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 63 6f e><span class=co
12710 6e 73 74 61 6e 74 3e 23 78 52 52 47 47 42 42 3c nstant>#xRRGGBB<
12720 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 6e 75 /span></code> nu
12730 6d 65 72 69 63 20 76 61 6c 75 65 2e 0a 4f 75 74 meric value..Out
12740 70 75 74 73 20 74 68 65 20 66 6f 72 6d 61 74 74 puts the formatt
12750 65 72 73 20 63 6f 6c 6f 72 65 64 20 77 69 74 68 ers colored with
12760 20 41 4e 53 49 20 65 73 63 61 70 65 73 2e 20 20 ANSI escapes.
12770 49 6e 20 61 64 64 69 74 69 6f 6e 0a 3c 70 3e 0a In addition.<p>.
12780 0a 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 .<code class=sch
12790 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 eme>(<span class
127a0 3d 76 61 72 69 61 62 6c 65 3e 66 6d 74 2d 69 6e =variable>fmt-in
127b0 2d 68 74 6d 6c 3c 2f 73 70 61 6e 3e 20 3c 73 70 -html</span> <sp
127c0 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c an class=variabl
127d0 65 3e 26 6c 74 3b 66 6f 72 6d 61 74 74 65 72 26 e><formatter&
127e0 67 74 3b 3c 2f 73 70 61 6e 3e 20 2e 2e 2e 29 3c gt;</span> ...)<
127f0 2f 63 6f 64 65 3e 0a 3c 70 3e 0a 0a 63 61 6e 20 /code>.<p>..can
12800 62 65 20 75 73 65 64 20 74 6f 20 6d 61 72 6b 20 be used to mark
12810 74 68 65 20 66 6f 72 6d 61 74 20 73 74 61 74 65 the format state
12820 20 61 73 20 62 65 69 6e 67 20 69 6e 73 69 64 65 as being inside
12830 20 48 54 4d 4c 2c 20 77 68 69 63 68 20 74 68 65 HTML, which the
12840 0a 61 62 6f 76 65 20 63 6f 6c 6f 72 20 66 6f 72 .above color for
12850 6d 61 74 73 20 77 69 6c 6c 20 75 6e 64 65 72 73 mats will unders
12860 74 61 6e 64 20 61 6e 64 20 6f 75 74 70 75 74 20 tand and output
12870 48 54 4d 4c 20 3c 63 6f 64 65 20 63 6c 61 73 73 HTML <code class
12880 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c =scheme><span cl
12890 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 ass=variable><
128a0 3b 73 70 61 6e 26 67 74 3b 3c 2f 73 70 61 6e 3e ;span></span>
128b0 3c 2f 63 6f 64 65 3e 20 74 61 67 73 20 77 69 74 </code> tags wit
128c0 68 0a 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 h.the appropriat
128d0 65 20 73 74 79 6c 65 20 63 6f 6c 6f 72 73 2c 20 e style colors,
128e0 69 6e 73 74 65 61 64 20 6f 66 20 41 4e 53 49 20 instead of ANSI
128f0 65 73 63 61 70 65 73 2e 0a 3c 70 3e 0a 0a 3c 61 escapes..<p>..<a
12900 20 6e 61 6d 65 3d 22 53 45 43 54 49 4f 4e 5f 39 name="SECTION_9
12910 22 3e 3c 68 31 3e 39 26 6e 62 73 70 3b 26 6e 62 "><h1>9 &nb
12920 73 70 3b 55 6e 69 63 6f 64 65 3c 2f 68 31 3e 0a sp;Unicode</h1>.
12930 0a 54 68 65 20 66 6d 74 2d 75 6e 69 63 6f 64 65 .The fmt-unicode
12940 20 6c 69 62 72 61 72 79 20 70 72 6f 76 69 64 65 library provide
12950 73 20 74 68 65 20 3c 63 6f 64 65 20 63 6c 61 73 s the <code clas
12960 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 s=scheme><span c
12970 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 66 6d lass=variable>fm
12980 74 2d 75 6e 69 63 6f 64 65 3c 2f 73 70 61 6e 3e t-unicode</span>
12990 3c 2f 63 6f 64 65 3e 20 66 6f 72 6d 61 74 74 65 </code> formatte
129a0 72 2c 20 77 68 69 63 68 0a 6a 75 73 74 20 74 61 r, which.just ta
129b0 6b 65 73 20 61 20 6c 69 73 74 20 6f 66 20 66 6f kes a list of fo
129c0 72 6d 61 74 74 65 72 73 20 61 6e 64 20 6f 76 65 rmatters and ove
129d0 72 72 69 64 65 73 20 74 68 65 20 73 74 72 69 6e rrides the strin
129e0 67 2d 6c 65 6e 67 74 68 20 66 6f 72 0a 70 61 64 g-length for.pad
129f0 64 69 6e 67 20 61 6e 64 20 74 72 69 6d 6d 69 6e ding and trimmin
12a00 67 2c 20 73 75 63 68 20 74 68 61 74 20 55 6e 69 g, such that Uni
12a10 63 6f 64 65 20 64 6f 75 62 6c 65 20 6f 72 20 66 code double or f
12a20 75 6c 6c 20 77 69 64 74 68 0a 63 68 61 72 61 63 ull width.charac
12a30 74 65 72 73 20 61 72 65 20 63 6f 6e 73 69 64 65 ters are conside
12a40 72 65 64 20 32 20 63 68 61 72 61 63 74 65 72 73 red 2 characters
12a50 20 77 69 64 65 20 28 61 73 20 74 68 65 79 20 74 wide (as they t
12a60 79 70 69 63 61 6c 6c 79 20 61 72 65 20 69 6e 0a ypically are in.
12a70 66 69 78 65 64 2d 77 69 64 74 68 20 74 65 72 6d fixed-width term
12a80 69 6e 61 6c 73 29 2c 20 77 68 69 6c 65 20 74 72 inals), while tr
12a90 65 61 74 69 6e 67 20 63 6f 6d 62 69 6e 69 6e 67 eating combining
12aa0 20 61 6e 64 20 6e 6f 6e 2d 73 70 61 63 69 6e 67 and non-spacing
12ab0 0a 63 68 61 72 61 63 74 65 72 73 20 61 73 20 30 .characters as 0
12ac0 20 63 68 61 72 61 63 74 65 72 73 20 77 69 64 65 characters wide
12ad0 2e 0a 3c 70 3e 0a 0a 49 74 20 61 6c 73 6f 20 72 ..<p>..It also r
12ae0 65 63 6f 67 6e 69 7a 65 73 20 61 6e 64 20 69 67 ecognizes and ig
12af0 6e 6f 72 65 73 20 41 4e 53 49 20 65 73 63 61 70 nores ANSI escap
12b00 65 73 2c 20 69 6e 20 70 61 72 74 69 63 75 6c 61 es, in particula
12b10 72 20 75 73 65 66 75 6c 20 69 66 0a 79 6f 75 20 r useful if.you
12b20 77 61 6e 74 20 74 6f 20 63 6f 6d 62 69 6e 65 20 want to combine
12b30 74 68 69 73 20 77 69 74 68 20 74 68 65 20 66 6d this with the fm
12b40 74 2d 63 6f 6c 6f 72 20 75 74 69 6c 69 74 69 65 t-color utilitie
12b50 73 2e 0a 3c 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d s..<p>..<a name=
12b60 22 53 45 43 54 49 4f 4e 5f 31 30 22 3e 3c 68 31 "SECTION_10"><h1
12b70 3e 31 30 26 6e 62 73 70 3b 26 6e 62 73 70 3b 4f >10 O
12b80 70 74 69 6d 69 7a 69 6e 67 3c 2f 68 31 3e 0a 0a ptimizing</h1>..
12b90 54 68 65 20 6c 69 62 72 61 72 79 20 69 73 20 64 The library is d
12ba0 65 73 69 67 6e 65 64 20 66 6f 72 20 73 63 61 6c esigned for scal
12bb0 61 62 69 6c 69 74 79 20 61 6e 64 20 66 6c 65 78 ability and flex
12bc0 69 62 69 6c 69 74 79 2c 20 6e 6f 74 20 73 70 65 ibility, not spe
12bd0 65 64 2c 0a 61 6e 64 20 49 27 6d 20 6e 6f 74 20 ed,.and I'm not
12be0 67 6f 69 6e 67 20 74 6f 20 74 68 69 6e 6b 20 61 going to think a
12bf0 62 6f 75 74 20 61 6e 79 20 66 69 6e 65 20 74 75 bout any fine tu
12c00 6e 69 6e 67 20 75 6e 74 69 6c 20 69 74 27 73 20 ning until it's
12c10 6d 6f 72 65 0a 73 74 61 62 69 6c 69 73 65 64 2e more.stabilised.
12c20 20 20 4f 6e 65 20 61 73 70 65 63 74 20 6f 66 20 One aspect of
12c30 74 68 65 20 64 65 73 69 67 6e 2c 20 68 6f 77 65 the design, howe
12c40 76 65 72 2c 20 77 61 73 20 69 6e 66 6c 75 65 6e ver, was influen
12c50 63 65 64 20 66 6f 72 20 74 68 65 0a 73 61 6b 65 ced for the.sake
12c60 20 6f 66 20 66 75 74 75 72 65 20 6f 70 74 69 6d of future optim
12c70 69 7a 61 74 69 6f 6e 73 2c 20 77 68 69 63 68 20 izations, which
12c80 69 73 20 74 68 61 74 20 6e 6f 6e 65 20 6f 66 20 is that none of
12c90 74 68 65 20 64 65 66 61 75 6c 74 20 66 6f 72 6d the default form
12ca0 61 74 0a 76 61 72 69 61 62 6c 65 73 20 61 72 65 at.variables are
12cb0 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 62 79 20 initialized by
12cc0 67 6c 6f 62 61 6c 20 70 61 72 61 6d 65 74 65 72 global parameter
12cd0 73 2c 20 77 68 69 63 68 20 6c 65 61 76 65 73 20 s, which leaves
12ce0 72 6f 6f 6d 20 66 6f 72 0a 69 6e 6c 69 6e 69 6e room for.inlinin
12cf0 67 20 61 6e 64 20 73 75 62 73 65 71 75 65 6e 74 g and subsequent
12d00 20 73 69 6d 70 6c 69 66 69 63 61 74 69 6f 6e 20 simplification
12d10 6f 66 20 66 6f 72 6d 61 74 20 63 61 6c 6c 73 2e of format calls.
12d20 0a 3c 70 3e 0a 0a 49 66 20 79 6f 75 20 64 6f 6e .<p>..If you don
12d30 27 74 20 68 61 76 65 20 61 6e 20 61 67 67 72 65 't have an aggre
12d40 73 73 69 76 65 6c 79 20 6f 70 74 69 6d 69 7a 69 ssively optimizi
12d50 6e 67 20 63 6f 6d 70 69 6c 65 72 2c 20 79 6f 75 ng compiler, you
12d60 20 63 61 6e 20 65 61 73 69 6c 79 0a 61 63 68 69 can easily.achi
12d70 65 76 65 20 6c 61 72 67 65 20 73 70 65 65 64 75 eve large speedu
12d80 70 73 20 6f 6e 20 63 6f 6d 6d 6f 6e 20 63 61 73 ps on common cas
12d90 65 73 20 77 69 74 68 20 43 4c 2d 73 74 79 6c 65 es with CL-style
12da0 20 63 6f 6d 70 69 6c 65 72 20 6d 61 63 72 6f 73 compiler macros
12db0 2e 0a 3c 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 ..<p>..<a name="
12dc0 53 45 43 54 49 4f 4e 5f 31 31 22 3e 3c 68 31 3e SECTION_11"><h1>
12dd0 31 31 26 6e 62 73 70 3b 26 6e 62 73 70 3b 43 6f 11 Co
12de0 6d 6d 6f 6e 20 4c 69 73 70 20 46 6f 72 6d 61 74 mmon Lisp Format
12df0 20 43 68 65 61 74 20 53 68 65 65 74 3c 2f 68 31 Cheat Sheet</h1
12e00 3e 0a 0a 41 20 71 75 69 63 6b 20 72 65 66 65 72 >..A quick refer
12e10 65 6e 63 65 20 66 6f 72 20 74 68 6f 73 65 20 6f ence for those o
12e20 66 20 79 6f 75 20 73 77 69 74 63 68 69 6e 67 20 f you switching
12e30 6f 76 65 72 20 66 72 6f 6d 20 43 6f 6d 6d 6f 6e over from Common
12e40 20 4c 69 73 70 27 73 0a 66 6f 72 6d 61 74 2e 0a Lisp's.format..
12e50 3c 70 3e 0a 0a 3c 74 61 62 6c 65 3e 0a 3c 74 72 <p>..<table>.<tr
12e60 3e 3c 74 64 3e 3c 73 74 72 6f 6e 67 3e 66 6f 72 ><td><strong>for
12e70 6d 61 74 3c 2f 73 74 72 6f 6e 67 3e 20 3c 2f 74 mat</strong> </t
12e80 64 3e 3c 74 64 3e 20 3c 73 74 72 6f 6e 67 3e 66 d><td> <strong>f
12e90 6d 74 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 74 64 3e mt</strong></td>
12ea0 3c 2f 74 72 3e 0a 3c 74 72 3e 3c 74 64 3e 7e 61 </tr>.<tr><td>~a
12eb0 20 3c 2f 74 64 3e 3c 74 64 3e 20 3c 63 6f 64 65 </td><td> <code
12ec0 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 class=scheme><s
12ed0 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 pan class=variab
12ee0 6c 65 3e 64 73 70 3c 2f 73 70 61 6e 3e 3c 2f 63 le>dsp</span></c
12ef0 6f 64 65 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c ode></td></tr>.<
12f00 74 72 3e 3c 74 64 3e 7e 63 20 3c 2f 74 64 3e 3c tr><td>~c </td><
12f10 74 64 3e 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d td> <code class=
12f20 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 scheme><span cla
12f30 73 73 3d 76 61 72 69 61 62 6c 65 3e 64 73 70 3c ss=variable>dsp<
12f40 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 3c 2f 74 /span></code></t
12f50 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 3c 74 64 3e d></tr>.<tr><td>
12f60 7e 73 20 3c 2f 74 64 3e 3c 74 64 3e 20 3c 63 6f ~s </td><td> <co
12f70 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 3e de class=scheme>
12f80 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 72 69 <span class=vari
12f90 61 62 6c 65 3e 77 72 74 2f 75 6e 73 68 61 72 65 able>wrt/unshare
12fa0 64 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 3c d</span></code><
12fb0 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 3c 74 /td></tr>.<tr><t
12fc0 64 3e 7e 77 20 3c 2f 74 64 3e 3c 74 64 3e 20 3c d>~w </td><td> <
12fd0 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
12fe0 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
12ff0 72 69 61 62 6c 65 3e 77 72 74 3c 2f 73 70 61 6e riable>wrt</span
13000 3e 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 3c 2f 74 ></code></td></t
13010 72 3e 0a 3c 74 72 3e 3c 74 64 3e 7e 79 20 3c 2f r>.<tr><td>~y </
13020 74 64 3e 3c 74 64 3e 20 3c 63 6f 64 65 20 63 6c td><td> <code cl
13030 61 73 73 3d 73 63 68 65 6d 65 3e 3c 73 70 61 6e ass=scheme><span
13040 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e class=variable>
13050 70 72 65 74 74 79 3c 2f 73 70 61 6e 3e 3c 2f 63 pretty</span></c
13060 6f 64 65 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c ode></td></tr>.<
13070 74 72 3e 3c 74 64 3e 7e 78 20 3c 2f 74 64 3e 3c tr><td>~x </td><
13080 74 64 3e 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d td> <code class=
13090 73 63 68 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c scheme>(<span cl
130a0 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 72 61 64 ass=variable>rad
130b0 69 78 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 ix</span> <span
130c0 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 31 36 3c class=number>16<
130d0 2f 73 70 61 6e 3e 20 2e 2e 2e 29 3c 2f 63 6f 64 /span> ...)</cod
130e0 65 3e 20 6f 72 20 3c 63 6f 64 65 20 63 6c 61 73 e> or <code clas
130f0 73 3d 73 63 68 65 6d 65 3e 28 3c 73 70 61 6e 20 s=scheme>(<span
13100 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 6e class=variable>n
13110 75 6d 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 um</span> <span
13120 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 class=variable>&
13130 6c 74 3b 6e 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 lt;n></span>
13140 3c 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 <span class=numb
13150 65 72 3e 31 36 3c 2f 73 70 61 6e 3e 29 3c 2f 63 er>16</span>)</c
13160 6f 64 65 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c ode></td></tr>.<
13170 74 72 3e 3c 74 64 3e 7e 6f 20 3c 2f 74 64 3e 3c tr><td>~o </td><
13180 74 64 3e 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d td> <code class=
13190 73 63 68 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c scheme>(<span cl
131a0 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 72 61 64 ass=variable>rad
131b0 69 78 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 ix</span> <span
131c0 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e 38 3c 2f class=number>8</
131d0 73 70 61 6e 3e 20 2e 2e 2e 29 3c 2f 63 6f 64 65 span> ...)</code
131e0 3e 20 6f 72 20 3c 63 6f 64 65 20 63 6c 61 73 73 > or <code class
131f0 3d 73 63 68 65 6d 65 3e 28 3c 73 70 61 6e 20 63 =scheme>(<span c
13200 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 6e 75 lass=variable>nu
13210 6d 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 m</span> <span c
13220 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c lass=variable>&l
13230 74 3b 6e 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 3c t;n></span> <
13240 73 70 61 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 span class=numbe
13250 72 3e 38 3c 2f 73 70 61 6e 3e 29 3c 2f 63 6f 64 r>8</span>)</cod
13260 65 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72 e></td></tr>.<tr
13270 3e 3c 74 64 3e 7e 62 20 3c 2f 74 64 3e 3c 74 64 ><td>~b </td><td
13280 3e 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 > <code class=sc
13290 68 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c 61 73 heme>(<span clas
132a0 73 3d 76 61 72 69 61 62 6c 65 3e 72 61 64 69 78 s=variable>radix
132b0 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
132c0 61 73 73 3d 6e 75 6d 62 65 72 3e 32 3c 2f 73 70 ass=number>2</sp
132d0 61 6e 3e 20 2e 2e 2e 29 3c 2f 63 6f 64 65 3e 20 an> ...)</code>
132e0 6f 72 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 or <code class=s
132f0 63 68 65 6d 65 3e 28 3c 73 70 61 6e 20 63 6c 61 cheme>(<span cla
13300 73 73 3d 76 61 72 69 61 62 6c 65 3e 6e 75 6d 3c ss=variable>num<
13310 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 /span> <span cla
13320 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b ss=variable><
13330 6e 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73 70 n></span> <sp
13340 61 6e 20 63 6c 61 73 73 3d 6e 75 6d 62 65 72 3e an class=number>
13350 32 3c 2f 73 70 61 6e 3e 29 3c 2f 63 6f 64 65 3e 2</span>)</code>
13360 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 3c </td></tr>.<tr><
13370 74 64 3e 7e 66 20 3c 2f 74 64 3e 3c 74 64 3e 20 td>~f </td><td>
13380 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
13390 6d 65 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d me>(<span class=
133a0 76 61 72 69 61 62 6c 65 3e 66 69 78 3c 2f 73 70 variable>fix</sp
133b0 61 6e 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d an> <span class=
133c0 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 64 69 67 variable><dig
133d0 69 74 73 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 2e its></span> .
133e0 2e 2e 29 3c 2f 63 6f 64 65 3e 20 6f 72 20 3c 63 ..)</code> or <c
133f0 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d 65 ode class=scheme
13400 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 >(<span class=va
13410 72 69 61 62 6c 65 3e 6e 75 6d 3c 2f 73 70 61 6e riable>num</span
13420 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 > <span class=va
13430 72 69 61 62 6c 65 3e 26 6c 74 3b 6e 26 67 74 3b riable><n>
13440 3c 2f 73 70 61 6e 3e 20 3c 73 70 61 6e 20 63 6c </span> <span cl
13450 61 73 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 ass=variable><
13460 3b 72 61 64 69 78 26 67 74 3b 3c 2f 73 70 61 6e ;radix></span
13470 3e 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 > <span class=va
13480 72 69 61 62 6c 65 3e 26 6c 74 3b 64 69 67 69 74 riable><digit
13490 73 26 67 74 3b 3c 2f 73 70 61 6e 3e 29 3c 2f 63 s></span>)</c
134a0 6f 64 65 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c ode></td></tr>.<
134b0 74 72 3e 3c 74 64 3e 7e 25 20 3c 2f 74 64 3e 3c tr><td>~% </td><
134c0 74 64 3e 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d td> <code class=
134d0 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 scheme><span cla
134e0 73 73 3d 76 61 72 69 61 62 6c 65 3e 6e 6c 3c 2f ss=variable>nl</
134f0 73 70 61 6e 3e 3c 2f 63 6f 64 65 3e 3c 2f 74 64 span></code></td
13500 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 3c 74 64 3e 7e ></tr>.<tr><td>~
13510 26 61 6d 70 3b 20 3c 2f 74 64 3e 3c 74 64 3e 20 & </td><td>
13520 3c 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 <code class=sche
13530 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 me><span class=v
13540 61 72 69 61 62 6c 65 3e 66 6c 3c 2f 73 70 61 6e ariable>fl</span
13550 3e 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 3c 2f 74 ></code></td></t
13560 72 3e 0a 3c 74 72 3e 3c 74 64 3e 7e 5b 2e 2e 2e r>.<tr><td>~[...
13570 7e 5d 20 3c 2f 74 64 3e 3c 74 64 3e 20 6e 6f 72 ~] </td><td> nor
13580 6d 61 6c 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d mal <code class=
13590 73 63 68 65 6d 65 3e 3c 73 70 61 6e 20 63 6c 61 scheme><span cla
135a0 73 73 3d 6b 65 79 77 6f 72 64 3e 69 66 3c 2f 73 ss=keyword>if</s
135b0 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 6f 72 20 3c pan></code> or <
135c0 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
135d0 65 3e 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 61 e><span class=va
135e0 72 69 61 62 6c 65 3e 66 6d 74 2d 69 66 3c 2f 73 riable>fmt-if</s
135f0 70 61 6e 3e 3c 2f 63 6f 64 65 3e 20 28 64 65 6c pan></code> (del
13600 61 79 65 64 20 74 65 73 74 29 3c 2f 74 64 3e 3c ayed test)</td><
13610 2f 74 72 3e 0a 3c 74 72 3e 3c 74 64 3e 7e 7b 2e /tr>.<tr><td>~{.
13620 2e 2e 7e 7d 20 3c 2f 74 64 3e 3c 74 64 3e 20 3c ..~} </td><td> <
13630 63 6f 64 65 20 63 6c 61 73 73 3d 73 63 68 65 6d code class=schem
13640 65 3e 28 3c 73 70 61 6e 20 63 6c 61 73 73 3d 76 e>(<span class=v
13650 61 72 69 61 62 6c 65 3e 66 6d 74 2d 6a 6f 69 6e ariable>fmt-join
13660 3c 2f 73 70 61 6e 3e 20 2e 2e 2e 20 3c 73 70 61 </span> ... <spa
13670 6e 20 63 6c 61 73 73 3d 76 61 72 69 61 62 6c 65 n class=variable
13680 3e 26 6c 74 3b 6c 69 73 74 26 67 74 3b 3c 2f 73 ><list></s
13690 70 61 6e 3e 20 5b 3c 73 70 61 6e 20 63 6c 61 73 pan> [<span clas
136a0 73 3d 76 61 72 69 61 62 6c 65 3e 26 6c 74 3b 73 s=variable><s
136b0 65 70 26 67 74 3b 3c 2f 73 70 61 6e 3e 5d 29 3c ep></span>])<
136c0 2f 63 6f 64 65 3e 3c 2f 74 64 3e 3c 2f 74 72 3e /code></td></tr>
136d0 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 70 3e 0a 0a 3c .</table>.<p>..<
136e0 61 20 6e 61 6d 65 3d 22 53 45 43 54 49 4f 4e 5f a name="SECTION_
136f0 31 32 22 3e 3c 68 31 3e 31 32 26 6e 62 73 70 3b 12"><h1>12
13700 26 6e 62 73 70 3b 52 65 66 65 72 65 6e 63 65 73 References
13710 3c 2f 68 31 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 </h1>..<a name="
13720 42 49 42 49 54 45 4d 5f 31 22 3e 5b 31 5d 26 6e BIBITEM_1">[1]&n
13730 62 73 70 3b 20 52 2e 20 4b 65 6c 73 65 79 2c 20 bsp; R. Kelsey,
13740 57 2e 20 43 6c 69 6e 67 65 72 2c 20 4a 2e 20 52 W. Clinger, J. R
13750 65 65 73 20 28 65 64 73 2e 29 0a 3c 61 20 68 72 ees (eds.).<a hr
13760 65 66 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 73 ef="http://www.s
13770 63 68 65 6d 65 72 73 2e 6f 72 67 2f 44 6f 63 75 chemers.org/Docu
13780 6d 65 6e 74 73 2f 53 74 61 6e 64 61 72 64 73 2f ments/Standards/
13790 52 35 52 53 2f 22 3e 52 65 76 69 73 65 64 5e 35 R5RS/">Revised^5
137a0 20 52 65 70 6f 72 74 20 6f 6e 20 74 68 65 20 41 Report on the A
137b0 6c 67 6f 72 69 74 68 6d 69 63 20 4c 61 6e 67 75 lgorithmic Langu
137c0 61 67 65 20 53 63 68 65 6d 65 3c 2f 61 3e 0a 3c age Scheme</a>.<
137d0 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 42 49 42 p>..<a name="BIB
137e0 49 54 45 4d 5f 32 22 3e 5b 32 5d 26 6e 62 73 70 ITEM_2">[2] 
137f0 3b 20 47 75 79 20 4c 2e 20 53 74 65 65 6c 65 20 ; Guy L. Steele
13800 4a 72 2e 20 28 65 64 69 74 6f 72 29 0a 3c 61 20 Jr. (editor).<a
13810 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 77 77 77 href="http://www
13820 2e 68 61 72 6c 65 71 75 69 6e 2e 63 6f 6d 2f 65 .harlequin.com/e
13830 64 75 63 61 74 69 6f 6e 2f 62 6f 6f 6b 73 2f 48 ducation/books/H
13840 79 70 65 72 53 70 65 63 2f 22 3e 43 6f 6d 6d 6f yperSpec/">Commo
13850 6e 20 4c 69 73 70 20 48 79 70 65 72 73 70 65 63 n Lisp Hyperspec
13860 3c 2f 61 3e 0a 3c 70 3e 0a 0a 3c 61 20 6e 61 6d </a>.<p>..<a nam
13870 65 3d 22 42 49 42 49 54 45 4d 5f 33 22 3e 5b 33 e="BIBITEM_3">[3
13880 5d 26 6e 62 73 70 3b 20 53 63 6f 74 74 20 47 2e ] Scott G.
13890 20 4d 69 6c 6c 65 72 0a 3c 61 20 68 72 65 66 3d Miller.<a href=
138a0 22 68 74 74 70 3a 2f 2f 73 72 66 69 2e 73 63 68 "http://srfi.sch
138b0 65 6d 65 72 73 2e 6f 72 67 2f 73 72 66 69 2d 32 emers.org/srfi-2
138c0 38 2f 22 3e 53 52 46 49 2d 32 38 20 42 61 73 69 8/">SRFI-28 Basi
138d0 63 20 46 6f 72 6d 61 74 20 53 74 72 69 6e 67 73 c Format Strings
138e0 3c 2f 61 3e 0a 3c 70 3e 0a 0a 3c 61 20 6e 61 6d </a>.<p>..<a nam
138f0 65 3d 22 42 49 42 49 54 45 4d 5f 34 22 3e 5b 34 e="BIBITEM_4">[4
13900 5d 26 6e 62 73 70 3b 20 4b 65 6e 20 44 69 63 6b ] Ken Dick
13910 65 79 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 ey.<a href="http
13920 3a 2f 2f 73 72 66 69 2e 73 63 68 65 6d 65 72 73 ://srfi.schemers
13930 2e 6f 72 67 2f 73 72 66 69 2d 34 38 2f 22 3e 53 .org/srfi-48/">S
13940 52 46 49 2d 34 38 20 49 6e 74 65 72 6d 65 64 69 RFI-48 Intermedi
13950 61 74 65 20 46 6f 72 6d 61 74 20 53 74 72 69 6e ate Format Strin
13960 67 73 3c 2f 61 3e 0a 3c 70 3e 0a 0a 3c 61 20 6e gs</a>.<p>..<a n
13970 61 6d 65 3d 22 42 49 42 49 54 45 4d 5f 35 22 3e ame="BIBITEM_5">
13980 5b 35 5d 26 6e 62 73 70 3b 20 52 61 79 20 44 69 [5] Ray Di
13990 6c 6c 69 6e 67 65 72 0a 3c 61 20 68 72 65 66 3d llinger.<a href=
139a0 22 68 74 74 70 3a 2f 2f 73 72 66 69 2e 73 63 68 "http://srfi.sch
139b0 65 6d 65 72 73 2e 6f 72 67 2f 73 72 66 69 2d 33 emers.org/srfi-3
139c0 38 2f 22 3e 53 52 46 49 2d 33 38 20 45 78 74 65 8/">SRFI-38 Exte
139d0 72 6e 61 6c 20 52 65 70 72 65 73 65 6e 74 61 74 rnal Representat
139e0 69 6f 6e 20 66 6f 72 20 44 61 74 61 20 57 69 74 ion for Data Wit
139f0 68 20 53 68 61 72 65 64 20 53 74 72 75 63 74 75 h Shared Structu
13a00 72 65 3c 2f 61 3e 0a 3c 70 3e 0a 0a 3c 61 20 6e re</a>.<p>..<a n
13a10 61 6d 65 3d 22 42 49 42 49 54 45 4d 5f 36 22 3e ame="BIBITEM_6">
13a20 5b 36 5d 26 6e 62 73 70 3b 20 44 61 6d 69 61 6e [6] Damian
13a30 20 43 6f 6e 77 61 79 0a 3c 61 20 68 72 65 66 3d Conway.<a href=
13a40 22 68 74 74 70 3a 2f 2f 77 77 77 2e 70 65 72 6c "http://www.perl
13a50 2e 63 6f 6d 2f 6c 70 74 2f 61 2f 38 31 39 22 3e .com/lpt/a/819">
13a60 50 65 72 6c 36 20 45 78 65 67 65 73 69 73 20 37 Perl6 Exegesis 7
13a70 20 2d 20 66 6f 72 6d 61 74 74 69 6e 67 3c 2f 61 - formatting</a
13a80 3e 0a 3c 70 3e 0a 0a 3c 62 72 20 2f 3e 3c 62 72 >.<p>..<br /><br
13a90 20 2f 3e 3c 62 72 20 2f 3e 3c 62 72 20 2f 3e 0a /><br /><br />.
13aa0 3c 21 2d 2d 20 70 61 67 65 20 63 72 65 61 74 65 <!-- page create
13ab0 64 20 62 79 20 4d 69 73 74 69 65 2c 20 68 74 74 d by Mistie, htt
13ac0 70 3a 2f 2f 77 77 77 2e 63 73 2e 72 69 63 65 2e p://www.cs.rice.
13ad0 65 64 75 2f 7e 64 6f 72 61 69 2f 6d 69 73 74 69 edu/~dorai/misti
13ae0 65 2f 20 2d 2d 3e 0a 3c 2f 62 6f 64 79 3e 3c 2f e/ -->.</body></
13af0 68 74 6d 6c 3e 0a html>.