Hex Artifact Content
Not logged in

Artifact 2f267e904e57401737ab97b9b262dc9e1d9089c4:


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&nbsp;&nbsp;
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&nbsp;&nbsp
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&quot;</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  &quot;make gauch
0c90: 65 20 26 61 6d 70 3b 26 61 6d 70 3b 20 6d 61 6b  e &amp;&amp; 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  &quot;</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>&quot;mak
0f00: 65 20 6d 7a 73 63 68 65 6d 65 26 71 75 6f 74 3b  e mzscheme&quot;
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>&gt;</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>&gt;<
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>&quot;let-opt
1170: 69 6f 6e 61 6c 73 2e 73 63 6d 26 71 75 6f 74 3b  ionals.scm&quot;
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&quot;</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>&quot;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>&quot
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&quot;</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>&quot;ma
13a0: 6e 74 69 73 73 61 2e 73 63 6d 26 71 75 6f 74 3b  ntissa.scm&quot;
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  &quot;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>&quot;fmt-pre
1450: 74 74 79 2e 73 63 6d 26 71 75 6f 74 3b 3c 2f 73  tty.scm&quot;</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>&quot;fmt
14e0: 2d 63 6f 6c 75 6d 6e 2e 73 63 6d 26 71 75 6f 74  -column.scm&quot
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>&quot
1570: 3b 66 6d 74 2d 63 2e 73 63 6d 26 71 75 6f 74 3b  ;fmt-c.scm&quot;
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>&quot;fmt-
1610: 63 6f 6c 6f 72 2e 73 63 6d 26 71 75 6f 74 3b 3c  color.scm&quot;<
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>&quot;
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&nbsp;&nbsp;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&nbsp;&
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  >&lt;output-dest
2090: 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73 70 61  &gt;</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  >&lt;format&gt;<
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>&lt;output
2110: 2d 64 65 73 74 26 67 74 3b 3c 2f 73 70 61 6e 3e  -dest&gt;</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>&lt;f
22a0: 6f 72 6d 61 74 26 67 74 3b 3c 2f 73 70 61 6e 3e  ormat&gt;</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  >&quot;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>&quot;Res
24a0: 75 6c 74 3a 20 34 32 6e 26 71 75 6f 74 3b 3c 2f  ult: 42n&quot;</
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&nbsp;&nbsp;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>/&lt;varian
28a0: 74 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f  t&gt;</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;&nbsp;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 &lt;
2910: 6f 62 6a 26 67 74 3b 29 3c 2f 68 33 3e 0a 0a 4f  obj&gt;)</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&gt;</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>&lt;obj
2b20: 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64  &gt;</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 &lt;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>&lt;o
2c60: 62 6a 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63  bj&gt;</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 &lt;
2d20: 6f 62 6a 26 67 74 3b 29 3c 2f 68 33 3e 0a 0a 41  obj&gt;)</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 &lt;o
2e50: 62 6a 26 67 74 3b 29 3c 2f 68 33 3e 0a 0a 50 72  bj&gt;)</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>&lt;obj&gt;<
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 &lt;obj&gt
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 &lt;
2ff0: 73 74 72 26 67 74 3b 20 5b 26 6c 74 3b 71 75 6f  str&gt; [&lt;quo
3000: 74 65 2d 63 68 26 67 74 3b 20 26 6c 74 3b 65 73  te-ch&gt; &lt;es
3010: 63 2d 63 68 26 67 74 3b 20 26 6c 74 3b 72 65 6e  c-ch&gt; &lt;ren
3020: 61 6d 65 72 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a  amer&gt;])</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>&lt;
3070: 73 74 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f  str&gt;</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>&lt;e
30e0: 73 63 2d 63 68 26 67 74 3b 3c 2f 73 70 61 6e 3e  sc-ch&gt;</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>&lt;
3170: 71 75 6f 74 65 2d 63 68 26 67 74 3b 3c 2f 73 70  quote-ch&gt;</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>&lt;ren
31f0: 61 6d 65 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c  amer&gt;</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>=&gt;
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>&quot;hi, 
33e0: 26 71 75 6f 74 3b 62 6f 62 21 26 71 75 6f 74 3b  &quot;bob!&quot;
33f0: 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 29 29 3c  &quot;</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>=&gt;</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>&quot;hi, &qu
3460: 6f 74 3b 62 6f 62 21 26 71 75 6f 74 3b 26 71 75  ot;bob!&quot;&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 &lt
34a0: 3b 73 74 72 26 67 74 3b 20 26 6c 74 3b 70 72 65  ;str&gt; &lt;pre
34b0: 64 26 67 74 3b 20 5b 26 6c 74 3b 71 75 6f 74 65  d&gt; [&lt;quote
34c0: 2d 63 68 26 67 74 3b 20 26 6c 74 3b 65 73 63 2d  -ch&gt; &lt;esc-
34d0: 63 68 26 67 74 3b 20 26 6c 74 3b 72 65 6e 61 6d  ch&gt; &lt;renam
34e0: 65 72 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a 4c  er&gt;])</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  &lt;pred&gt;</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>&quot;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>#\&quot;
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&quot;</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>&quot;foo bar
3870: 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73  &quot;</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  >=&gt;</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  >&quot;&quot;foo
3930: 20 62 61 72 26 71 75 6f 74 3b 26 71 75 6f 74 3b   bar&quot;&quot;
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>&quot;foo
39f0: 26 71 75 6f 74 3b 62 61 72 26 71 75 6f 74 3b 62  &quot;bar&quot;b
3a00: 61 7a 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 20  az&quot;</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  &quot;</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>=&gt;</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>&quot;&quot;f
3ac0: 6f 6f 26 71 75 6f 74 3b 62 61 72 26 71 75 6f 74  oo&quot;bar&quot
3ad0: 3b 62 61 7a 26 71 75 6f 74 3b 26 71 75 6f 74 3b  ;baz&quot;&quot;
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&nbsp;&nbsp;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&gt; [&lt;ra
3b50: 64 69 78 26 67 74 3b 20 26 6c 74 3b 70 72 65 63  dix&gt; &lt;prec
3b60: 69 73 69 6f 6e 26 67 74 3b 20 26 6c 74 3b 73 69  ision&gt; &lt;si
3b70: 67 6e 26 67 74 3b 20 26 6c 74 3b 63 6f 6d 6d 61  gn&gt; &lt;comma
3b80: 26 67 74 3b 20 26 6c 74 3b 63 6f 6d 6d 61 2d 73  &gt; &lt;comma-s
3b90: 65 70 26 67 74 3b 20 26 6c 74 3b 64 65 63 69 6d  ep&gt; &lt;decim
3ba0: 61 6c 2d 73 65 70 26 67 74 3b 5d 29 3c 2f 68 33  al-sep&gt;])</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>&lt;n&gt;</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>&lt;radix&gt
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&gt;</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  >&lt;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>&lt
3d70: 3b 73 69 67 6e 26 67 74 3b 3c 2f 73 70 61 6e 3e  ;sign&gt;</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>&lt;sign&gt;<
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>=&gt;</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>&lt;comma
3ff0: 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64  &gt;</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>&lt;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>&lt;deci
4170: 6d 61 6c 2d 73 65 70 26 67 74 3b 3c 2f 73 70 61  mal-sep&gt;</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>&lt
4270: 3b 63 6f 6d 6d 61 2d 73 65 70 26 67 74 3b 3c 2f  ;comma-sep&gt;</
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 &lt;n&g
4360: 74 3b 20 5b 26 6c 74 3b 62 61 73 65 26 67 74 3b  t; [&lt;base&gt;
4370: 20 26 6c 74 3b 70 72 65 63 69 73 69 6f 6e 26 67   &lt;precision&g
4380: 74 3b 20 26 6c 74 3b 73 69 67 6e 26 67 74 3b 5d  t; &lt;sign&gt;]
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>=&gt;<
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>&quot;
44f0: 31 2c 32 33 34 2c 35 36 37 26 71 75 6f 74 3b 3c  1,234,567&quot;<
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&gt; [&lt;ba
4530: 73 65 26 67 74 3b 20 26 6c 74 3b 73 75 66 66 69  se&gt; &lt;suffi
4540: 78 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a 41 62  x&gt;])</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>&lt;n&gt;</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>&lt;su
46a0: 66 66 69 78 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c  ffix&gt;</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>=&gt;
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>&quot
47e0: 3b 36 30 38 26 71 75 6f 74 3b 3c 2f 73 70 61 6e  ;608&quot;</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>=&gt;</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>&quot;3.
48f0: 39 4b 69 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e  9Ki&quot;</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>&quot;B&quot
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&quot;</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  &lt;width&gt; &l
4b10: 74 3b 6e 26 67 74 3b 20 2e 20 26 6c 74 3b 41 52  t;n&gt; . &lt;AR
4b20: 47 53 26 67 74 3b 29 3c 2f 68 33 3e 0a 0a 4c 69  GS&gt;)</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>&lt;width
4bc0: 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64  &gt;</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  &lt;precision&gt
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>=&gt
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;#.##&quot;</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&gt;)</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>=&gt;</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>&quot;MCML
4f40: 58 58 58 49 58 26 71 75 6f 74 3b 3c 2f 73 70 61  XXXIX&quot;</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 &lt;n&gt;)</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>=&gt;</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>&quot;MDCCCCL
50e0: 58 58 58 56 49 49 49 49 26 71 75 6f 74 3b 3c 2f  XXXVIIII&quot;</
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;&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 &lt
51f0: 3b 63 6f 6c 75 6d 6e 26 67 74 3b 29 3c 2f 68 33  ;column&gt;)</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>&lt;co
5250: 6c 75 6d 6e 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c  lumn&gt;</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 &gt;= 
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>&lt;colu
52c0: 6d 6e 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63  mn&gt;</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 [&lt;tab-wi
5300: 64 74 68 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a  dth&gt;])</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>&lt;tab
5380: 2d 77 69 64 74 68 26 67 74 3b 3c 2f 73 70 61 6e  -width&gt;</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>&quot; &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&nbsp;&nbsp;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 &lt;
5580: 66 6f 72 6d 61 74 26 67 74 3b 20 2e 2e 2e 29 3c  format&gt; ...)<
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&gt;</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  &lt;list&gt;)</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>&lt
56a0: 3b 6c 69 73 74 26 67 74 3b 3c 2f 73 70 61 6e 3e  ;list&gt;</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 &lt;forma
56f0: 74 74 65 72 26 67 74 3b 20 26 6c 74 3b 6c 69 73  tter&gt; &lt;lis
5700: 74 26 67 74 3b 20 5b 26 6c 74 3b 73 65 70 26 67  t&gt; [&lt;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>&lt;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>&lt
57a0: 3b 6c 69 73 74 26 67 74 3b 3c 2f 73 70 61 6e 3e  ;list&gt;</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>&lt;format
57f0: 74 65 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 0a 3c  ter&gt;</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>&lt;elt&gt;<
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>&lt;sep&gt;</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  >&lt;sep&gt;</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;, &quot;</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>=&gt;</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>&quot;a,
5a80: 20 62 2c 20 63 26 71 75 6f 74 3b 3c 2f 73 70 61   b, c&quot;</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 &lt;formatte
5ac0: 72 26 67 74 3b 20 26 6c 74 3b 6c 69 73 74 26 67  r&gt; &lt;list&g
5ad0: 74 3b 20 5b 26 6c 74 3b 73 65 70 26 67 74 3b 5d  t; [&lt;sep&gt;]
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 &lt
5b00: 3b 66 6f 72 6d 61 74 74 65 72 26 67 74 3b 20 26  ;formatter&gt; &
5b10: 6c 74 3b 6c 69 73 74 26 67 74 3b 20 5b 26 6c 74  lt;list&gt; [&lt
5b20: 3b 73 65 70 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a  ;sep&gt;])</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>&quot;/&
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>=&gt;</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>&quot;/usr/loc
5cc0: 61 6c 2f 62 69 6e 26 71 75 6f 74 3b 3c 2f 73 70  al/bin&quot;</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>&lt;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 &lt;formatt
5db0: 65 72 26 67 74 3b 20 26 6c 74 3b 6c 61 73 74 2d  er&gt; &lt;last-
5dc0: 66 6f 72 6d 61 74 74 65 72 26 67 74 3b 20 26 6c  formatter&gt; &l
5dd0: 74 3b 6c 69 73 74 26 67 74 3b 20 5b 26 6c 74 3b  t;list&gt; [&lt;
5de0: 73 65 70 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a  sep&gt;])</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  &gt;</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 &lt;formatter
5ee0: 26 67 74 3b 20 26 6c 74 3b 64 6f 74 2d 66 6f 72  &gt; &lt;dot-for
5ef0: 6d 61 74 74 65 72 26 67 74 3b 20 26 6c 74 3b 6c  matter&gt; &lt;l
5f00: 69 73 74 26 67 74 3b 20 5b 26 6c 74 3b 73 65 70  ist&gt; [&lt;sep
5f10: 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a 41 73 20  &gt;])</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>&lt
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;&nbsp;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 &lt;
6050: 77 69 64 74 68 26 67 74 3b 20 26 6c 74 3b 66 6f  width&gt; &lt;fo
6060: 72 6d 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68  rmat&gt; ...)</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 &lt;width&gt; 
6090: 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b 20 2e  &lt;format&gt; .
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 &lt;widt
60c0: 68 26 67 74 3b 20 26 6c 74 3b 66 6f 72 6d 61 74  h&gt; &lt;format
60d0: 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a  &gt; ...)</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>&lt;format&gt
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>&lt;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&gt;</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 &lt;width&gt;
6440: 20 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b 20   &lt;format&gt; 
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 &lt;wi
6470: 64 74 68 26 67 74 3b 20 26 6c 74 3b 66 6f 72 6d  dth&gt; &lt;form
6480: 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e  at&gt; ...)</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   &lt;width&gt; &
64b0: 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b 20 2e 2e  lt;format&gt; ..
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>&lt;format&gt
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&gt;</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>&lt;format&gt;
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&gt;</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  >&lt;width&gt;</
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&gt;</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>&quot
6a90: 3b 2e 2e 2e 26 71 75 6f 74 3b 3c 2f 73 70 61 6e  ;...&quot;</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>&quot;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>=&gt;</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>&quot;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>&quot;...&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>&quot
6c80: 3b 61 62 63 64 65 66 26 71 75 6f 74 3b 3c 2f 73  ;abcdef&quot;</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>=&gt;
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...&quot;</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 &lt;width&gt; 
6d30: 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b 20 2e  &lt;format&gt; .
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 &lt
6e10: 3b 77 69 64 74 68 26 67 74 3b 20 26 6c 74 3b 66  ;width&gt; &lt;f
6e20: 6f 72 6d 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f  ormat&gt; ...)</
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 &lt;width&gt;
6e50: 20 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b 20   &lt;format&gt; 
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 &lt;wid
6e80: 74 68 26 67 74 3b 20 26 6c 74 3b 66 6f 72 6d 61  th&gt; &lt;forma
6e90: 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e 0a  t&gt; ...)</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>&lt;wid
6f80: 74 68 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63  th&gt;</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&nbsp;&nbsp;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 &lt;name&gt
7180: 3b 20 26 6c 74 3b 76 61 6c 75 65 26 67 74 3b 20  ; &lt;value&gt; 
7190: 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b 20 2e  &lt;format&gt; .
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 &lt;name
71c0: 26 67 74 3b 20 26 6c 74 3b 76 61 6c 75 65 26 67  &gt; &lt;value&g
71d0: 74 3b 20 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74  t; &lt;format&gt
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>&lt;for
7280: 6d 61 74 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f  mat&gt;</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 &lt;pred&
7380: 67 74 3b 20 26 6c 74 3b 70 61 73 73 26 67 74 3b  gt; &lt;pass&gt;
7390: 20 5b 26 6c 74 3b 66 61 69 6c 26 67 74 3b 5d 29   [&lt;fail&gt;])
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&gt;</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>&lt;pass&gt;
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  >&lt;fail&gt;</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   &lt;k&gt; &lt;f
7660: 6f 72 6d 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f  ormat&gt; ...)</
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&gt; &lt;form
7690: 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e  at&gt; ...)</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)&quot;</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>&quot;
7bf0: 28 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 20 28  (&quot;</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>&quot; &quot;<
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>&quot
7ce0: 3b 29 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 29  ;)&quot;</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  >&quot;(46 50 5a
7d40: 29 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 3c 2f  )&quot;</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&quot; 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>=&gt;</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>&quot;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>=&gt;
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>&quot
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&quot;</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&gt; &lt;form
8180: 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e  at&gt; ...)</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>&quot; &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&gt; &lt;for
8680: 6d 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33  mat&gt; ...)</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 &lt;k&gt; &
86b0: 6c 74 3b 66 6f 72 6d 61 74 26 67 74 3b 20 2e 2e  lt;format&gt; ..
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 &lt;
8790: 6b 26 67 74 3b 20 26 6c 74 3b 66 6f 72 6d 61 74  k&gt; &lt;format
87a0: 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e 0a 0a  &gt; ...)</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>&quot;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  &quot;</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>&quot;Roa
8d60: 73 74 20 4d 75 74 74 6f 6e 26 71 75 6f 74 3b 3c  st Mutton&quot;<
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  &quot;A Short Re
8dc0: 73 74 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 20  st&quot;</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>&quot;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&quot;</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&quot;</
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 &lt;ell&g
9080: 74 3b 20 26 6c 74 3b 66 6f 72 6d 61 74 26 67 74  t; &lt;format&gt
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>&lt;ell&gt;<
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 &lt;w
9140: 69 64 74 68 26 67 74 3b 20 26 6c 74 3b 66 6f 72  idth&gt; &lt;for
9150: 6d 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33  mat&gt; ...)</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  &nbsp;&nbsp;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 &lt;colum
9340: 6e 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e 0a  n&gt; ...)</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>&lt;column
9390: 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64  &gt;</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  &quot;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>&quot;/* &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>&quot; | &quot
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&quot
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  >&quot; */&quot;
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   &lt;column&gt; 
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>&quot
a2f0: 3b 7c 22 20 28 64 73 70 20 26 71 75 6f 74 3b 3c  ;|" (dsp &quot;<
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>&quot;) &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  &quot;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  >&quot;|"))</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  &lt;column&gt; .
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>&lt;column&gt;
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>&lt
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  &lt;line-generat
a6c0: 6f 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 5b 3c  or&gt;</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>&lt;infinite
a6f0: 3f 26 67 74 3b 3c 2f 73 70 61 6e 3e 5d 29 3c 2f  ?&gt;</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>&lt;lin
a740: 65 2d 67 65 6e 65 72 61 74 6f 72 26 67 74 3b 3c  e-generator&gt;<
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  &lt;line-formatt
a7c0: 65 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63  er&gt;</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>&lt;infinite?
a880: 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f 64  &gt;</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   &lt;format&gt; 
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 &lt;form
aa20: 61 74 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e  at&gt; ...)</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>&quot;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 &quot;</
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   &quot;</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>&quot;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.&quot;</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>&quot; ; &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 &lt;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>&lt;
b330: 70 61 74 68 6e 61 6d 65 26 67 74 3b 3c 2f 73 70  pathname&gt;</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 [&lt;sta
b440: 72 74 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a 41  rt&gt;])</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&gt;</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  &quot; &quot;</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&quot;</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-&gt;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&nbsp;&nbsp;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;&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 &quot;c-&quot;
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 &quot
c9b0: 3b 63 26 71 75 6f 74 3b 20 70 72 65 66 69 78 2c  ;c&quot; 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&nbsp;&nbsp;
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&lt;</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) &lt; 
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&quot;
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&nbsp;&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&amp;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  &amp;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. &quot;a+b
dda0: 2b 33 26 71 75 6f 74 3b 20 69 6e 73 74 65 61 64  +3&quot; instead
ddb0: 20 6f 66 20 26 71 75 6f 74 3b 61 20 2b 20 62 20   of &quot;a + b 
ddc0: 2b 20 33 26 71 75 6f 74 3b 7d 0a 3c 70 3e 0a 0a  + 3&quot;}.<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&nbsp;&nbsp;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  &lt;condition&gt
df80: 3b 20 26 6c 74 3b 70 61 73 73 26 67 74 3b 20 5b  ; &lt;pass&gt; [
df90: 26 6c 74 3b 66 61 69 6c 26 67 74 3b 20 5b 26 6c  &lt;fail&gt; [&l
dfa0: 74 3b 63 6f 6e 64 69 74 69 6f 6e 32 26 67 74 3b  t;condition2&gt;
dfb0: 20 26 6c 74 3b 70 61 73 73 32 26 67 74 3b 20 2e   &lt;pass2&gt; .
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&gt; &lt;
e080: 63 6f 6e 64 69 74 69 6f 6e 26 67 74 3b 20 26 6c  condition&gt; &l
e090: 74 3b 75 70 64 61 74 65 26 67 74 3b 20 26 6c 74  t;update&gt; &lt
e0a0: 3b 62 6f 64 79 26 67 74 3b 20 2e 2e 2e 29 3c 2f  ;body&gt; ...)</
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 &lt;condition&
e0d0: 67 74 3b 20 26 6c 74 3b 62 6f 64 79 26 67 74 3b  gt; &lt;body&gt;
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 &lt;type&gt; 
e120: 26 6c 74 3b 6e 61 6d 65 26 67 74 3b 20 26 6c 74  &lt;name&gt; &lt
e130: 3b 70 61 72 61 6d 73 26 67 74 3b 20 26 6c 74 3b  ;params&gt; &lt;
e140: 62 6f 64 79 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68  body&gt; ...)</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 &lt;type&gt
e170: 3b 20 26 6c 74 3b 6e 61 6d 65 26 67 74 3b 20 26  ; &lt;name&gt; &
e180: 6c 74 3b 70 61 72 61 6d 73 26 67 74 3b 29 3c 2f  lt;params&gt;)</
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>&lt;param-ty
e230: 70 65 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73  pe&gt;</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>&lt;param-nam
e260: 65 26 67 74 3b 3c 2f 73 70 61 6e 3e 29 3c 2f 63  e&gt;</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   &lt;type&gt; &l
e580: 74 3b 6e 61 6d 65 26 67 74 3b 20 5b 26 6c 74 3b  t;name&gt; [&lt;
e590: 69 6e 69 74 2d 76 61 6c 75 65 26 67 74 3b 5d 29  init-value&gt;])
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 &lt;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 &lt;expr&gt;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&gt; ..
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 &lt;values&
e6e0: 67 74 3b 20 26 6c 74 3b 62 6f 64 79 26 67 74 3b  gt; &lt;body&gt;
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 &lt;values&g
e720: 74 3b 20 26 6c 74 3b 62 6f 64 79 26 67 74 3b 20  t; &lt;body&gt; 
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 &lt;bo
e750: 64 79 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e  dy&gt; ...)</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 &lt;name&gt;)<
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 &lt;name&gt;)<
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 [&lt;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   &lt;expr&gt;)</
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 &lt;expr&gt;)
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 &lt;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 &lt;e
e9f0: 78 70 72 26 67 74 3b 29 3c 2f 68 33 3e 0a 0a 3c  xpr&gt;)</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&gt;)</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&gt;)</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   &lt;expr&gt;)</
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 &lt;expr&gt;)
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 &lt;body&gt; 
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 &quot;C&quot;
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 &lt;
eb30: 74 79 70 65 26 67 74 3b 20 26 6c 74 3b 65 78 70  type&gt; &lt;exp
eb40: 72 26 67 74 3b 29 3c 2f 68 33 3e 0a 0a 43 61 73  r&gt;)</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 &lt;type&gt; 
ebb0: 26 6c 74 3b 6e 65 77 2d 6e 61 6d 65 26 67 74 3b  &lt;new-name&gt;
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 [&lt;name&g
ec20: 74 3b 5d 20 26 6c 74 3b 66 69 65 6c 64 2d 6c 69  t;] &lt;field-li
ec30: 73 74 26 67 74 3b 20 5b 26 6c 74 3b 61 74 74 72  st&gt; [&lt;attr
ec40: 69 62 75 74 65 73 26 67 74 3b 5d 29 3c 2f 68 33  ibutes&gt;])</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  [&lt;name&gt;] &
ec70: 6c 74 3b 66 69 65 6c 64 2d 6c 69 73 74 26 67 74  lt;field-list&gt
ec80: 3b 20 5b 26 6c 74 3b 61 74 74 72 69 62 75 74 65  ; [&lt;attribute
ec90: 73 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a 3c 68  s&gt;])</h3>..<h
eca0: 33 3e 28 63 2d 63 6c 61 73 73 20 5b 26 6c 74 3b  3>(c-class [&lt;
ecb0: 6e 61 6d 65 26 67 74 3b 5d 20 26 6c 74 3b 66 69  name&gt;] &lt;fi
ecc0: 65 6c 64 2d 6c 69 73 74 26 67 74 3b 20 5b 26 6c  eld-list&gt; [&l
ecd0: 74 3b 61 74 74 72 69 62 75 74 65 73 26 67 74 3b  t;attributes&gt;
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 &lt;va
ed00: 6c 75 65 73 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68  lues&gt; ...)</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  &lt;name&gt;] &l
f100: 74 3b 65 6e 75 6d 2d 6c 69 73 74 26 67 74 3b 29  t;enum-list&gt;)
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>&lt;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 &lt;fo
f1e0: 72 6d 61 74 74 65 72 26 67 74 3b 20 2e 2e 2e 29  rmatter&gt; ...)
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>&lt;f
f230: 6f 72 6d 61 74 74 65 72 26 67 74 3b 3c 2f 73 70  ormatter&gt;</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&nbsp;&nbsp
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 &lt;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&quot;
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>=&gt;</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>&quot;#inc
f4b0: 6c 75 64 65 20 26 6c 74 3b 73 74 64 69 6f 2e 68  lude &lt;stdio.h
f4c0: 26 67 74 3b 6e 26 71 75 6f 74 3b 3c 2f 73 70 61  &gt;n&quot;</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&quot
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&quot
f600: 3b 6e 26 71 75 6f 74 3b 3c 2f 73 70 61 6e 3e 3c  ;n&quot;</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 &lt;
f630: 6d 61 63 72 6f 26 67 74 3b 20 5b 26 6c 74 3b 76  macro&gt; [&lt;v
f640: 61 6c 75 65 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a  alue&gt;])</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 &lt;co
f920: 6e 64 69 74 69 6f 6e 26 67 74 3b 20 26 6c 74 3b  ndition&gt; &lt;
f930: 70 61 73 73 26 67 74 3b 20 5b 26 6c 74 3b 66 61  pass&gt; [&lt;fa
f940: 69 6c 26 67 74 3b 20 2e 2e 2e 5d 29 3c 2f 68 33  il&gt; ...])</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 &lt;condition&
f970: 67 74 3b 20 26 6c 74 3b 70 61 73 73 26 67 74 3b  gt; &lt;pass&gt;
f980: 20 5b 26 6c 74 3b 66 61 69 6c 26 67 74 3b 20 2e   [&lt;fail&gt; .
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 &lt;c
f9b0: 6f 6e 64 69 74 69 6f 6e 26 67 74 3b 20 26 6c 74  ondition&gt; &lt
f9c0: 3b 70 61 73 73 26 67 74 3b 20 5b 26 6c 74 3b 66  ;pass&gt; [&lt;f
f9d0: 61 69 6c 26 67 74 3b 20 2e 2e 2e 5d 29 3c 2f 68  ail&gt; ...])</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 &lt;condition&
fa00: 67 74 3b 20 26 6c 74 3b 70 61 73 73 26 67 74 3b  gt; &lt;pass&gt;
fa10: 20 5b 26 6c 74 3b 66 61 69 6c 26 67 74 3b 20 2e   [&lt;fail&gt; .
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 &lt;bod
fa40: 79 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e 0a  y&gt; ...)</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 &lt
fa80: 3b 6e 75 6d 26 67 74 3b 20 5b 26 6c 74 3b 66 69  ;num&gt; [&lt;fi
fa90: 6c 65 26 67 74 3b 5d 29 3c 2f 68 33 3e 0a 0a 4c  le&gt;])</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 &lt
fad0: 3b 61 72 67 73 26 67 74 3b 20 2e 2e 2e 29 3c 2f  ;args&gt; ...)</
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 &lt;args&gt;
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 &lt
fb20: 3b 61 72 67 73 26 67 74 3b 20 2e 2e 2e 29 3c 2f  ;args&gt; ...)</
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   &lt;expr&gt;)</
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>&lt;exp
fbc0: 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f 63 6f  r&gt;</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 &lt;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  >&lt;args&gt;</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 &lt
fcc0: 3b 6e 61 6d 65 26 67 74 3b 20 26 6c 74 3b 62 6f  ;name&gt; &lt;bo
fcd0: 64 79 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e  dy&gt; ...)</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  &amp;</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  &amp;&amp;</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&lt;&lt;
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;&gt;</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&lt;</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&gt;</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&lt;=</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&gt;=
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&lt;&lt;=</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&gt;&gt;
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&nbsp;&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  >&lt;type&gt;</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>&lt;typ
10750 65 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 5b 3c 73  e&gt;</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>&lt;size&gt;<
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>&lt;type&gt;<
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>&lt;s
10850 69 7a 65 26 67 74 3b 3c 2f 73 70 61 6e 3e 3c 2f  ize&gt;</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&gt
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;&nbsp;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-&gt
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>&lt;l
11850 61 62 65 6c 2d 6e 61 6d 65 26 67 74 3b 3c 2f 73  abel-name&gt;</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>&lt;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>&lt;=</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  &lt;= 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&nbsp;&nbsp;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 [&lt;na
12050 6d 65 26 67 74 3b 5d 20 28 26 6c 74 3b 70 61 72  me&gt;] (&lt;par
12060 61 6d 73 26 67 74 3b 29 20 26 6c 74 3b 62 6f 64  ams&gt;) &lt;bod
12070 79 26 67 74 3b 20 2e 2e 2e 29 3c 2f 68 33 3e 0a  y&gt; ...)</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 &lt;n
120d0 61 6d 65 26 67 74 3b 20 5b 26 6c 74 3b 69 6e 69  ame&gt; [&lt;ini
120e0 74 2d 76 61 6c 75 65 26 67 74 3b 5d 29 3c 2f 68  t-value&gt;])</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 &lt;f
12150 6f 72 6d 61 74 74 65 72 26 67 74 3b 20 2e 2e 2e  ormatter&gt; ...
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>&quot;// &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&nbsp;&nbsp;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>&lt;format
122b0 74 65 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 2e  ter&gt;</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  >&lt;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>&lt
12360 3b 66 6f 72 6d 61 74 74 65 72 26 67 74 3b 3c 2f  ;formatter&gt;</
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>&lt;form
123c0 61 74 74 65 72 26 67 74 3b 3c 2f 73 70 61 6e 3e  atter&gt;</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>&lt;formatt
12420 65 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 2e 2e  er&gt;</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>&lt;formatter
12480 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 2e 2e 2e 29  &gt;</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&gt;
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>&lt;f
12530 6f 72 6d 61 74 74 65 72 26 67 74 3b 3c 2f 73 70  ormatter&gt;</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>&lt;format
12590 74 65 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 2e  ter&gt;</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>&lt;format
125f0 74 65 72 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 2e  ter&gt;</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>&lt;color
12680 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73 70 61  &gt;</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  >&lt;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>&lt;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>&lt
128a0 3b 73 70 61 6e 26 67 74 3b 3c 2f 73 70 61 6e 3e  ;span&gt;</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&nbsp;&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&nbsp;&nbsp;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&nbsp;&nbsp;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&gt;</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&gt;</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>&lt;
13330 6e 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 3c 73 70  n&gt;</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>&lt;dig
133d0 69 74 73 26 67 74 3b 3c 2f 73 70 61 6e 3e 20 2e  its&gt;</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>&lt;n&gt;
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>&lt
13460 3b 72 61 64 69 78 26 67 74 3b 3c 2f 73 70 61 6e  ;radix&gt;</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>&lt;digit
13490 73 26 67 74 3b 3c 2f 73 70 61 6e 3e 29 3c 2f 63  s&gt;</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  &amp; </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  >&lt;list&gt;</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>&lt;s
136b0 65 70 26 67 74 3b 3c 2f 73 70 61 6e 3e 5d 29 3c  ep&gt;</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&nbsp;
13700 26 6e 62 73 70 3b 52 65 66 65 72 65 6e 63 65 73  &nbsp;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]&nbsp
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  ]&nbsp; 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  ]&nbsp; 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]&nbsp; 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]&nbsp; 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>.