◊(Local Yarn Code "Hex Artifact Content")

Artifact 08620f02590778467436f02578fd9b57c7f99879f4d53a1047aac50563908f28:


0000: 23 6c 61 6e 67 20 72 61 63 6b 65 74 2f 62 61 73  #lang racket/bas
0010: 65 0a 0a 3b 3b 20 4c 69 63 65 6e 73 65 64 20 75  e..;; Licensed u
0020: 6e 64 65 72 20 74 68 65 20 4c 6f 63 61 6c 20 59  nder the Local Y
0030: 61 72 6e 20 4c 69 63 65 6e 73 65 20 31 2e 30 2e  arn License 1.0.
0040: 30 2e 20 59 6f 75 20 6d 61 79 20 6e 6f 74 20 75  0. You may not u
0050: 73 65 20 74 68 69 73 20 0a 3b 3b 20 66 69 6c 65  se this .;; file
0060: 20 65 78 63 65 70 74 20 69 6e 20 63 6f 6d 70 6c   except in compl
0070: 69 61 6e 63 65 20 77 69 74 68 20 74 68 61 74 20  iance with that 
0080: 6c 69 63 65 6e 73 65 2e 20 41 20 63 6f 70 79 20  license. A copy 
0090: 6f 66 20 74 68 65 20 6c 69 63 65 6e 73 65 0a 3b  of the license.;
00a0: 3b 20 69 73 20 69 6e 63 6c 75 64 65 64 20 77 69  ; is included wi
00b0: 74 68 20 74 68 69 73 20 73 6f 75 72 63 65 20 63  th this source c
00c0: 6f 64 65 2c 20 69 6e 20 74 68 65 20 66 69 6c 65  ode, in the file
00d0: 20 e2 80 9c 4c 49 43 45 4e 53 45 2e 6d 64 e2 80   ...LICENSE.md..
00e0: 9d 2e 0a 3b 3b 0a 3b 3b 20 4d 61 69 6e 74 61 69  ...;;.;; Maintai
00f0: 6e 65 72 20 63 6f 6e 74 61 63 74 20 69 6e 66 6f  ner contact info
0100: 72 6d 61 74 69 6f 6e 3a 0a 3b 3b 20 20 20 4a 6f  rmation:.;;   Jo
0110: 65 6c 20 44 75 65 63 6b 20 28 6a 6f 65 6c 40 6a  el Dueck (joel@j
0120: 64 75 65 63 6b 2e 6e 65 74 29 0a 3b 3b 20 20 20  dueck.net).;;   
0130: 68 74 74 70 73 3a 2f 2f 6a 6f 65 6c 64 75 65 63  https://joelduec
0140: 6b 2e 63 6f 6d 0a 3b 3b 20 2d 2d 2d 2d 2d 2d 2d  k.com.;; -------
0150: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0160: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0170: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0180: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0190: 2d 2d 0a 0a 3b 3b 20 46 75 6e 63 74 69 6f 6e 73  --..;; Functions
01a0: 20 66 6f 72 20 74 61 67 73 20 61 6e 64 20 74 65   for tags and te
01b0: 6d 70 6c 61 74 65 20 63 6f 6e 74 65 6e 74 20 75  mplate content u
01c0: 73 65 64 20 69 6e 20 61 6c 6c 20 50 6f 6c 6c 65  sed in all Polle
01d0: 6e 20 73 6f 75 72 63 65 20 66 69 6c 65 73 20 61  n source files a
01e0: 6e 64 20 74 65 6d 70 6c 61 74 65 73 2e 0a 0a 28  nd templates...(
01f0: 72 65 71 75 69 72 65 20 28 66 6f 72 2d 73 79 6e  require (for-syn
0200: 74 61 78 20 72 61 63 6b 65 74 2f 62 61 73 65 0a  tax racket/base.
0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0220: 20 20 20 20 20 72 61 63 6b 65 74 2f 73 79 6e 74       racket/synt
0230: 61 78 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ax.             
0240: 20 20 20 20 20 20 20 20 73 79 6e 74 61 78 2f 70          syntax/p
0250: 61 72 73 65 0a 20 20 20 20 20 20 20 20 20 20 20  arse.           
0260: 20 20 20 20 20 20 20 20 20 20 70 6f 6c 6c 65 6e            pollen
0270: 2f 73 65 74 75 70 29 29 0a 0a 28 72 65 71 75 69  /setup))..(requi
0280: 72 65 20 70 6f 6c 6c 65 6e 2f 74 61 67 0a 20 20  re pollen/tag.  
0290: 20 20 20 20 20 20 20 70 6f 6c 6c 65 6e 2f 73 65         pollen/se
02a0: 74 75 70 0a 20 20 20 20 20 20 20 20 20 72 61 63  tup.         rac
02b0: 6b 65 74 2f 66 75 6e 63 74 69 6f 6e 0a 20 20 20  ket/function.   
02c0: 20 20 20 20 20 20 22 74 61 67 73 2d 68 74 6d 6c        "tags-html
02d0: 2e 72 6b 74 22 0a 20 20 20 20 20 20 20 20 20 22  .rkt".         "
02e0: 73 6e 69 70 70 65 74 73 2d 68 74 6d 6c 2e 72 6b  snippets-html.rk
02f0: 74 22 0a 20 20 20 20 20 20 20 20 20 22 63 72 79  t".         "cry
0300: 73 74 61 6c 69 7a 65 2e 72 6b 74 22 29 0a 0a 28  stalize.rkt")..(
0310: 70 72 6f 76 69 64 65 20 28 61 6c 6c 2d 64 65 66  provide (all-def
0320: 69 6e 65 64 2d 6f 75 74 29 0a 20 20 20 20 20 20  ined-out).      
0330: 20 20 20 28 61 6c 6c 2d 66 72 6f 6d 2d 6f 75 74     (all-from-out
0340: 20 22 63 72 79 73 74 61 6c 69 7a 65 2e 72 6b 74   "crystalize.rkt
0350: 22 20 22 73 6e 69 70 70 65 74 73 2d 68 74 6d 6c  " "snippets-html
0360: 2e 72 6b 74 22 29 29 0a 0a 28 6d 6f 64 75 6c 65  .rkt"))..(module
0370: 20 73 65 74 75 70 20 72 61 63 6b 65 74 2f 62 61   setup racket/ba
0380: 73 65 0a 20 20 28 72 65 71 75 69 72 65 20 73 79  se.  (require sy
0390: 6e 74 61 78 2f 6d 6f 64 72 65 73 6f 6c 76 65 20  ntax/modresolve 
03a0: 70 6f 6c 6c 65 6e 2f 73 65 74 75 70 29 0a 20 20  pollen/setup).  
03b0: 28 70 72 6f 76 69 64 65 20 28 61 6c 6c 2d 64 65  (provide (all-de
03c0: 66 69 6e 65 64 2d 6f 75 74 29 29 0a 20 20 28 64  fined-out)).  (d
03d0: 65 66 69 6e 65 20 70 6f 6c 79 2d 74 61 72 67 65  efine poly-targe
03e0: 74 73 20 27 28 68 74 6d 6c 29 29 0a 20 20 28 64  ts '(html)).  (d
03f0: 65 66 69 6e 65 20 62 6c 6f 63 6b 2d 74 61 67 73  efine block-tags
0400: 20 28 63 6f 6e 73 20 27 74 69 74 6c 65 20 64 65   (cons 'title de
0410: 66 61 75 6c 74 2d 62 6c 6f 63 6b 2d 74 61 67 73  fault-block-tags
0420: 29 29 0a 20 20 28 64 65 66 69 6e 65 20 63 61 63  )).  (define cac
0430: 68 65 2d 77 61 74 63 68 6c 69 73 74 0a 20 20 20  he-watchlist.   
0440: 20 28 6d 61 70 20 72 65 73 6f 6c 76 65 2d 6d 6f   (map resolve-mo
0450: 64 75 6c 65 2d 70 61 74 68 20 27 28 22 74 61 67  dule-path '("tag
0460: 73 2d 68 74 6d 6c 2e 72 6b 74 22 0a 20 20 20 20  s-html.rkt".    
0470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0480: 20 20 20 20 20 20 20 20 20 20 20 22 73 6e 69 70             "snip
0490: 70 65 74 73 2d 68 74 6d 6c 2e 72 6b 74 22 0a 20  pets-html.rkt". 
04a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
04b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 64                "d
04c0: 75 73 74 2e 72 6b 74 22 0a 20 20 20 20 20 20 20  ust.rkt".       
04d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
04e0: 20 20 20 20 20 20 20 20 22 63 72 79 73 74 61 6c          "crystal
04f0: 69 7a 65 2e 72 6b 74 22 29 29 29 29 0a 0a 3b 3b  ize.rkt"))))..;;
0500: 20 4d 61 63 72 6f 20 66 6f 72 20 64 65 66 69 6e   Macro for defin
0510: 69 6e 67 20 74 61 67 20 66 75 6e 63 74 69 6f 6e  ing tag function
0520: 73 20 74 68 61 74 20 61 75 74 6f 6d 61 74 69 63  s that automatic
0530: 61 6c 6c 79 20 62 72 61 6e 63 68 20 62 61 73 65  ally branch base
0540: 64 20 6f 6e 20 74 68 65 20 0a 3b 3b 20 63 75 72  d on the .;; cur
0550: 72 65 6e 74 20 6f 75 74 70 75 74 20 66 6f 72 6d  rent output form
0560: 61 74 20 61 6e 64 20 74 68 65 20 6c 69 73 74 20  at and the list 
0570: 6f 66 20 70 6f 6c 79 2d 74 61 72 67 65 74 73 20  of poly-targets 
0580: 69 6e 20 74 68 65 20 73 65 74 75 70 20 6d 6f 64  in the setup mod
0590: 75 6c 65 2e 0a 3b 3b 20 55 73 65 20 74 68 69 73  ule..;; Use this
05a0: 20 6d 61 63 72 6f 20 77 68 65 6e 20 79 6f 75 20   macro when you 
05b0: 6b 6e 6f 77 20 79 6f 75 20 77 69 6c 6c 20 6e 65  know you will ne
05c0: 65 64 20 6b 65 79 77 6f 72 64 20 61 72 67 75 6d  ed keyword argum
05d0: 65 6e 74 73 2e 0a 3b 3b 0a 28 64 65 66 69 6e 65  ents..;;.(define
05e0: 2d 73 79 6e 74 61 78 20 28 70 6f 6c 79 2d 62 72  -syntax (poly-br
05f0: 61 6e 63 68 2d 6b 77 61 72 67 73 2d 74 61 67 20  anch-kwargs-tag 
0600: 73 74 78 29 0a 20 20 28 73 79 6e 74 61 78 2d 70  stx).  (syntax-p
0610: 61 72 73 65 20 73 74 78 0a 20 20 20 20 5b 28 5f  arse stx.    [(_
0620: 20 54 41 47 3a 69 64 29 0a 20 20 20 20 20 28 77   TAG:id).     (w
0630: 69 74 68 2d 73 79 6e 74 61 78 20 28 5b 28 28 50  ith-syntax ([((P
0640: 4f 4c 59 2d 54 41 52 47 45 54 20 50 4f 4c 59 2d  OLY-TARGET POLY-
0650: 46 55 4e 43 29 20 2e 2e 2e 29 20 0a 20 20 20 20  FUNC) ...) .    
0660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0670: 28 66 6f 72 2f 6c 69 73 74 20 28 5b 74 61 72 67  (for/list ([targ
0680: 65 74 20 28 69 6e 2d 6c 69 73 74 20 28 73 65 74  et (in-list (set
0690: 75 70 3a 70 6f 6c 79 2d 74 61 72 67 65 74 73 29  up:poly-targets)
06a0: 29 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  )]).            
06b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
06c0: 20 20 28 6c 69 73 74 20 74 61 72 67 65 74 20 28    (list target (
06d0: 66 6f 72 6d 61 74 2d 69 64 20 73 74 78 20 22 7e  format-id stx "~
06e0: 61 2d 7e 61 22 20 74 61 72 67 65 74 20 23 27 54  a-~a" target #'T
06f0: 41 47 29 29 29 5d 0a 20 20 20 20 20 20 20 20 20  AG)))].         
0700: 20 20 20 20 20 20 20 20 20 20 5b 44 45 46 41 55            [DEFAU
0710: 4c 54 2d 46 55 4e 43 20 28 66 6f 72 6d 61 74 2d  LT-FUNC (format-
0720: 69 64 20 73 74 78 20 22 68 74 6d 6c 2d 7e 61 22  id stx "html-~a"
0730: 20 23 27 54 41 47 29 5d 29 0a 20 20 20 20 20 20   #'TAG)]).      
0740: 20 23 27 28 64 65 66 69 6e 65 2d 74 61 67 2d 66   #'(define-tag-f
0750: 75 6e 63 74 69 6f 6e 20 28 54 41 47 20 61 74 74  unction (TAG att
0760: 72 69 62 75 74 65 73 20 65 6c 65 6d 73 29 0a 20  ributes elems). 
0770: 20 20 20 20 20 20 20 20 20 20 28 63 61 73 65 20            (case 
0780: 28 63 75 72 72 65 6e 74 2d 70 6f 6c 79 2d 74 61  (current-poly-ta
0790: 72 67 65 74 29 0a 20 20 20 20 20 20 20 20 20 20  rget).          
07a0: 20 20 20 5b 28 50 4f 4c 59 2d 54 41 52 47 45 54     [(POLY-TARGET
07b0: 29 20 28 50 4f 4c 59 2d 46 55 4e 43 20 61 74 74  ) (POLY-FUNC att
07c0: 72 69 62 75 74 65 73 20 65 6c 65 6d 73 29 5d 20  ributes elems)] 
07d0: 2e 2e 2e 20 0a 20 20 20 20 20 20 20 20 20 20 20  ... .           
07e0: 20 20 5b 65 6c 73 65 20 28 44 45 46 41 55 4c 54    [else (DEFAULT
07f0: 2d 46 55 4e 43 20 61 74 74 72 69 62 75 74 65 73  -FUNC attributes
0800: 20 65 6c 65 6d 73 29 5d 29 29 29 5d 29 29 0a 0a   elems)])))]))..
0810: 3b 3b 20 4c 69 6b 65 20 61 62 6f 76 65 2c 20 62  ;; Like above, b
0820: 75 74 20 75 73 65 73 20 60 64 65 66 69 6e 65 60  ut uses `define`
0830: 20 69 6e 73 74 65 61 64 20 6f 66 20 60 64 65 66   instead of `def
0840: 69 6e 65 2d 74 61 67 2d 66 75 6e 63 74 69 6f 6e  ine-tag-function
0850: 60 2e 0a 3b 3b 20 55 73 65 20 74 68 69 73 20 77  `..;; Use this w
0860: 68 65 6e 20 79 6f 75 20 6b 6e 6f 77 20 79 6f 75  hen you know you
0870: 20 77 69 6c 6c 20 6e 6f 74 20 6e 65 65 64 20 6b   will not need k
0880: 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73  eyword arguments
0890: 2e 0a 3b 3b 0a 28 64 65 66 69 6e 65 2d 73 79 6e  ..;;.(define-syn
08a0: 74 61 78 20 28 70 6f 6c 79 2d 62 72 61 6e 63 68  tax (poly-branch
08b0: 2d 74 61 67 20 73 74 78 29 0a 20 20 28 73 79 6e  -tag stx).  (syn
08c0: 74 61 78 2d 70 61 72 73 65 20 73 74 78 0a 20 20  tax-parse stx.  
08d0: 20 20 5b 28 5f 20 54 41 47 3a 69 64 29 0a 20 20    [(_ TAG:id).  
08e0: 20 20 20 28 77 69 74 68 2d 73 79 6e 74 61 78 20     (with-syntax 
08f0: 28 5b 28 28 50 4f 4c 59 2d 54 41 52 47 45 54 20  ([((POLY-TARGET 
0900: 50 4f 4c 59 2d 46 55 4e 43 29 20 2e 2e 2e 29 20  POLY-FUNC) ...) 
0910: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0920: 20 20 20 20 20 28 66 6f 72 2f 6c 69 73 74 20 28       (for/list (
0930: 5b 74 61 72 67 65 74 20 28 69 6e 2d 6c 69 73 74  [target (in-list
0940: 20 28 73 65 74 75 70 3a 70 6f 6c 79 2d 74 61 72   (setup:poly-tar
0950: 67 65 74 73 29 29 5d 29 0a 20 20 20 20 20 20 20  gets))]).       
0960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0970: 20 20 20 20 20 20 20 28 6c 69 73 74 20 74 61 72         (list tar
0980: 67 65 74 20 28 66 6f 72 6d 61 74 2d 69 64 20 73  get (format-id s
0990: 74 78 20 22 7e 61 2d 7e 61 22 20 74 61 72 67 65  tx "~a-~a" targe
09a0: 74 20 23 27 54 41 47 29 29 29 5d 0a 20 20 20 20  t #'TAG)))].    
09b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b                 [
09c0: 44 45 46 41 55 4c 54 2d 46 55 4e 43 20 28 66 6f  DEFAULT-FUNC (fo
09d0: 72 6d 61 74 2d 69 64 20 73 74 78 20 22 68 74 6d  rmat-id stx "htm
09e0: 6c 2d 7e 61 22 20 23 27 54 41 47 29 5d 29 0a 20  l-~a" #'TAG)]). 
09f0: 20 20 20 20 20 20 23 27 28 64 65 66 69 6e 65 20        #'(define 
0a00: 28 54 41 47 20 2e 20 61 72 67 73 29 0a 20 20 20  (TAG . args).   
0a10: 20 20 20 20 20 20 20 20 28 63 61 73 65 20 28 63          (case (c
0a20: 75 72 72 65 6e 74 2d 70 6f 6c 79 2d 74 61 72 67  urrent-poly-targ
0a30: 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  et).            
0a40: 20 5b 28 50 4f 4c 59 2d 54 41 52 47 45 54 29 20   [(POLY-TARGET) 
0a50: 28 61 70 70 6c 79 20 50 4f 4c 59 2d 46 55 4e 43  (apply POLY-FUNC
0a60: 20 61 72 67 73 29 5d 20 2e 2e 2e 0a 20 20 20 20   args)] ....    
0a70: 20 20 20 20 20 20 20 20 20 5b 65 6c 73 65 20 28           [else (
0a80: 61 70 70 6c 79 20 44 45 46 41 55 4c 54 2d 46 55  apply DEFAULT-FU
0a90: 4e 43 20 61 72 67 73 29 5d 29 29 29 5d 29 29 0a  NC args)])))])).
0aa0: 0a 3b 3b 20 44 65 66 69 6e 65 20 61 6c 6c 20 74  .;; Define all t
0ab0: 68 65 20 74 61 67 20 66 75 6e 63 74 69 6f 6e 73  he tag functions
0ac0: 0a 28 70 6f 6c 79 2d 62 72 61 6e 63 68 2d 74 61  .(poly-branch-ta
0ad0: 67 20 72 6f 6f 74 29 0a 20 20 20 20 0a 28 70 6f  g root).    .(po
0ae0: 6c 79 2d 62 72 61 6e 63 68 2d 74 61 67 20 70 29  ly-branch-tag p)
0af0: 0a 28 70 6f 6c 79 2d 62 72 61 6e 63 68 2d 74 61  .(poly-branch-ta
0b00: 67 20 69 29 0a 28 70 6f 6c 79 2d 62 72 61 6e 63  g i).(poly-branc
0b10: 68 2d 74 61 67 20 65 6d 29 0a 28 70 6f 6c 79 2d  h-tag em).(poly-
0b20: 62 72 61 6e 63 68 2d 74 61 67 20 62 29 0a 28 70  branch-tag b).(p
0b30: 6f 6c 79 2d 62 72 61 6e 63 68 2d 74 61 67 20 73  oly-branch-tag s
0b40: 74 72 6f 6e 67 29 0a 28 70 6f 6c 79 2d 62 72 61  trong).(poly-bra
0b50: 6e 63 68 2d 74 61 67 20 73 74 72 69 6b 65 29 0a  nch-tag strike).
0b60: 3b 28 70 6f 6c 79 2d 62 72 61 6e 63 68 2d 74 61  ;(poly-branch-ta
0b70: 67 20 63 6f 6c 6f 72 29 0a 28 70 6f 6c 79 2d 62  g color).(poly-b
0b80: 72 61 6e 63 68 2d 74 61 67 20 6f 6c 29 0a 28 70  ranch-tag ol).(p
0b90: 6f 6c 79 2d 62 72 61 6e 63 68 2d 74 61 67 20 75  oly-branch-tag u
0ba0: 6c 29 0a 28 70 6f 6c 79 2d 62 72 61 6e 63 68 2d  l).(poly-branch-
0bb0: 74 61 67 20 69 74 65 6d 29 0a 28 70 6f 6c 79 2d  tag item).(poly-
0bc0: 62 72 61 6e 63 68 2d 74 61 67 20 73 75 70 29 0a  branch-tag sup).
0bd0: 28 70 6f 6c 79 2d 62 72 61 6e 63 68 2d 74 61 67  (poly-branch-tag
0be0: 20 62 6c 6f 63 6b 71 75 6f 74 65 29 0a 28 70 6f   blockquote).(po
0bf0: 6c 79 2d 62 72 61 6e 63 68 2d 74 61 67 20 6e 65  ly-branch-tag ne
0c00: 77 74 68 6f 75 67 68 74 29 0a 28 70 6f 6c 79 2d  wthought).(poly-
0c10: 62 72 61 6e 63 68 2d 74 61 67 20 73 6d 61 6c 6c  branch-tag small
0c20: 63 61 70 73 29 0a 28 70 6f 6c 79 2d 62 72 61 6e  caps).(poly-bran
0c30: 63 68 2d 74 61 67 20 63 65 6e 74 65 72 29 0a 28  ch-tag center).(
0c40: 70 6f 6c 79 2d 62 72 61 6e 63 68 2d 74 61 67 20  poly-branch-tag 
0c50: 73 65 63 74 69 6f 6e 29 0a 28 70 6f 6c 79 2d 62  section).(poly-b
0c60: 72 61 6e 63 68 2d 74 61 67 20 73 75 62 73 65 63  ranch-tag subsec
0c70: 74 69 6f 6e 29 0a 28 70 6f 6c 79 2d 62 72 61 6e  tion).(poly-bran
0c80: 63 68 2d 74 61 67 20 63 6f 64 65 29 0a 28 70 6f  ch-tag code).(po
0c90: 6c 79 2d 62 72 61 6e 63 68 2d 6b 77 61 72 67 73  ly-branch-kwargs
0ca0: 2d 74 61 67 20 62 6c 6f 63 6b 63 6f 64 65 29 0a  -tag blockcode).
0cb0: 28 70 6f 6c 79 2d 62 72 61 6e 63 68 2d 6b 77 61  (poly-branch-kwa
0cc0: 72 67 73 2d 74 61 67 20 76 65 72 73 65 29 20 20  rgs-tag verse)  
0cd0: 20 20 20 20 20 20 20 20 3b 20 5b 23 3a 74 69 74          ; [#:tit
0ce0: 6c 65 20 22 22 5d 20 5b 23 3a 69 74 61 6c 69 63  le ""] [#:italic
0cf0: 20 22 6e 6f 22 5d 0a 0a 28 70 6f 6c 79 2d 62 72   "no"]..(poly-br
0d00: 61 6e 63 68 2d 74 61 67 20 6c 69 6e 6b 29 0a 28  anch-tag link).(
0d10: 70 6f 6c 79 2d 62 72 61 6e 63 68 2d 74 61 67 20  poly-branch-tag 
0d20: 75 72 6c 29 0a 28 70 6f 6c 79 2d 62 72 61 6e 63  url).(poly-branc
0d30: 68 2d 74 61 67 20 66 6e 29 0a 28 70 6f 6c 79 2d  h-tag fn).(poly-
0d40: 62 72 61 6e 63 68 2d 74 61 67 20 66 6e 64 65 66  branch-tag fndef
0d50: 29 0a 0a 28 70 6f 6c 79 2d 62 72 61 6e 63 68 2d  )..(poly-branch-
0d60: 6b 77 61 72 67 73 2d 74 61 67 20 6e 6f 74 65 29  kwargs-tag note)
0d70: 0a 0a 3b 3b 20 4e 6f 74 20 79 65 74 20 69 6d 70  ..;; Not yet imp
0d80: 6c 65 6d 65 6e 74 65 64 0a 3b 20 28 70 6f 6c 79  lemented.; (poly
0d90: 2d 62 72 61 6e 63 68 2d 74 61 67 20 74 61 62 6c  -branch-tag tabl
0da0: 65 29 20 20 20 20 20 20 20 20 20 3b 20 23 3a 63  e)         ; #:c
0db0: 6f 6c 75 6d 6e 73 20 22 22 0a 3b 20 28 70 6f 6c  olumns "".; (pol
0dc0: 79 2d 62 72 61 6e 63 68 2d 74 61 67 20 69 6e 6c  y-branch-tag inl
0dd0: 69 6e 65 2d 6d 61 74 68 29 0a 3b 20 28 70 6f 6c  ine-math).; (pol
0de0: 79 2d 62 72 61 6e 63 68 2d 74 61 67 20 6d 61 72  y-branch-tag mar
0df0: 67 69 6e 2d 6e 6f 74 65 29 0a 3b 20 28 70 6f 6c  gin-note).; (pol
0e00: 79 2d 62 72 61 6e 63 68 2d 74 61 67 20 6e 6f 75  y-branch-tag nou
0e10: 6e 29 0a 3b 20 28 70 6f 6c 79 2d 62 72 61 6e 63  n).; (poly-branc
0e20: 68 2d 66 75 6e 63 20 69 6e 64 65 78 2d 65 6e 74  h-func index-ent
0e30: 72 79 20 65 6e 74 72 79 29 0a 3b 20 28 70 6f 6c  ry entry).; (pol
0e40: 79 2d 62 72 61 6e 63 68 2d 74 61 67 20 66 69 67  y-branch-tag fig
0e50: 75 72 65 29 20 20 20 20 20 20 20 20 20 20 20 20  ure)            
0e60: 3b 20 23 3a 73 72 63 20 22 69 6d 67 2d 2d 73 61  ; #:src "img--sa
0e70: 6e 73 2d 70 61 74 68 2e 70 6e 67 22 20 5b 23 3a  ns-path.png" [#:
0e80: 68 61 73 2d 70 72 69 6e 74 2d 76 65 72 73 69 6f  has-print-versio
0e90: 6e 3f 20 22 79 65 73 22 5d 0a 3b 20 28 70 6f 6c  n? "yes"].; (pol
0ea0: 79 2d 62 72 61 6e 63 68 2d 74 61 67 20 73 70 6f  y-branch-tag spo
0eb0: 74 2d 69 6c 6c 75 73 74 72 61 74 69 6f 6e 29 20  t-illustration) 
0ec0: 3b 20 23 3a 73 72 63 20 22 69 6d 67 2d 2d 73 61  ; #:src "img--sa
0ed0: 6e 73 2d 70 61 74 68 2e 70 6e 67 22 20 5b 23 3a  ns-path.png" [#:
0ee0: 68 61 73 2d 70 72 69 6e 74 2d 76 65 72 73 69 6f  has-print-versio
0ef0: 6e 3f 20 22 79 65 73 22 5d 0a 0a 3b 3b 20 4d 79  n? "yes"]..;; My
0f00: 20 70 65 74 20 73 68 6f 72 74 63 75 74 20 66 6f   pet shortcut fo
0f10: 72 20 66 6f 72 2f 73 70 6c 69 63 65 2e 20 47 72  r for/splice. Gr
0f20: 65 61 74 6c 79 20 63 75 74 73 20 64 6f 77 6e 20  eatly cuts down 
0f30: 6f 6e 20 70 61 72 65 6e 74 68 65 73 65 73 20 66  on parentheses f
0f40: 6f 72 20 74 68 65 0a 3b 3b 20 6d 6f 73 74 20 63  or the.;; most c
0f50: 6f 6d 6d 6f 6e 20 75 73 65 20 63 61 73 65 20 28  ommon use case (
0f60: 6c 6f 6f 70 69 6e 67 20 74 68 72 6f 75 67 68 20  looping through 
0f70: 61 20 73 69 6e 67 6c 65 20 6c 69 73 74 29 2e 0a  a single list)..
0f80: 28 64 65 66 69 6e 65 2d 73 79 6e 74 61 78 20 28  (define-syntax (
0f90: 66 6f 72 2f 73 20 73 74 78 29 0a 20 20 28 73 79  for/s stx).  (sy
0fa0: 6e 74 61 78 2d 63 61 73 65 20 73 74 78 20 28 29  ntax-case stx ()
0fb0: 0a 20 20 20 20 5b 28 5f 20 74 68 69 6e 67 20 6c  .    [(_ thing l
0fc0: 69 73 74 6f 66 74 68 69 6e 67 73 20 72 65 73 75  istofthings resu
0fd0: 6c 74 2d 65 78 70 72 20 2e 2e 2e 29 0a 20 20 20  lt-expr ...).   
0fe0: 20 20 23 27 28 66 6f 72 2f 73 70 6c 69 63 65 20    #'(for/splice 
0ff0: 28 5b 74 68 69 6e 67 20 28 69 6e 2d 6c 69 73 74  ([thing (in-list
1000: 20 6c 69 73 74 6f 66 74 68 69 6e 67 73 29 5d 29   listofthings)])
1010: 20 72 65 73 75 6c 74 2d 65 78 70 72 20 2e 2e 2e   result-expr ...
1020: 29 5d 29 29 0a                                   )])).