0000: 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 20 50 <!DOCTYPE html P
0010: 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 UBLIC "-//W3C//D
0020: 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 54 72 61 TD HTML 4.01 Tra
0030: 6e 73 69 74 69 6f 6e 61 6c 2f 2f 45 4e 22 20 22 nsitional//EN" "
0040: 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 http://www.w3.or
0050: 67 2f 54 52 2f 68 74 6d 6c 34 2f 6c 6f 6f 73 65 g/TR/html4/loose
0060: 2e 64 74 64 22 3e 0a 3c 21 2d 2d 20 44 4f 20 4e .dtd">.<!-- DO N
0070: 4f 54 20 45 44 49 54 20 54 48 49 53 20 46 49 4c OT EDIT THIS FIL
0080: 45 2d 2d 3e 0a 3c 21 2d 2d 20 45 64 69 74 20 74 E-->.<!-- Edit t
0090: 68 65 20 2e 74 65 78 20 76 65 72 73 69 6f 6e 20 he .tex version
00a0: 69 6e 73 74 65 61 64 2d 2d 3e 0a 3c 68 74 6d 6c instead-->.<html
00b0: 3e 3c 68 65 61 64 3e 0a 3c 6d 65 74 61 20 68 74 ><head>.<meta ht
00c0: 74 70 2d 65 71 75 69 76 3d 22 63 6f 6e 74 65 6e tp-equiv="conten
00d0: 74 2d 74 79 70 65 22 20 63 6f 6e 74 65 6e 74 3d t-type" content=
00e0: 22 74 65 78 74 2f 68 74 6d 6c 3b 20 63 68 61 72 "text/html; char
00f0: 73 65 74 3d 55 54 46 2d 38 22 3e 0a 3c 74 69 74 set=UTF-8">.<tit
0100: 6c 65 3e 55 73 69 6e 67 20 4d 61 74 63 68 3c 2f le>Using Match</
0110: 74 69 74 6c 65 3e 0a 3c 6c 69 6e 6b 20 68 72 65 title>.<link hre
0120: 66 3d 22 6d 61 74 63 68 5f 66 69 6c 65 73 2f 62 f="match_files/b
0130: 61 73 65 2e 63 73 73 22 20 72 65 6c 3d 22 73 74 ase.css" rel="st
0140: 79 6c 65 73 68 65 65 74 22 20 74 79 70 65 3d 22 ylesheet" type="
0150: 74 65 78 74 2f 63 73 73 22 3e 0a 3c 73 63 72 69 text/css">.<scri
0160: 70 74 3e 28 66 75 6e 63 74 69 6f 6e 20 6e 28 29 pt>(function n()
0170: 7b 21 66 75 6e 63 74 69 6f 6e 28 29 7b 66 75 6e {!function(){fun
0180: 63 74 69 6f 6e 20 65 28 65 2c 74 2c 6e 29 7b 74 ction e(e,t,n){t
0190: 3d 74 7c 7c 7b 7d 3b 76 61 72 20 69 3d 65 2e 6f =t||{};var i=e.o
01a0: 77 6e 65 72 44 6f 63 75 6d 65 6e 74 7c 7c 65 2c wnerDocument||e,
01b0: 61 3d 69 2e 63 72 65 61 74 65 45 76 65 6e 74 3f a=i.createEvent?
01c0: 69 2e 63 72 65 61 74 65 45 76 65 6e 74 28 22 43 i.createEvent("C
01d0: 75 73 74 6f 6d 45 76 65 6e 74 22 29 3a 69 2e 63 ustomEvent"):i.c
01e0: 72 65 61 74 65 45 76 65 6e 74 4f 62 6a 65 63 74 reateEventObject
01f0: 28 29 3b 61 2e 69 6e 69 74 43 75 73 74 6f 6d 45 ();a.initCustomE
0200: 76 65 6e 74 26 26 61 2e 69 6e 69 74 43 75 73 74 vent&&a.initCust
0210: 6f 6d 45 76 65 6e 74 28 74 2e 74 79 70 65 2c 21 omEvent(t.type,!
0220: 21 74 2e 62 75 62 62 6c 65 73 2c 21 21 74 2e 63 !t.bubbles,!!t.c
0230: 61 6e 63 65 6c 61 62 6c 65 2c 74 2e 64 65 74 61 ancelable,t.deta
0240: 69 6c 29 3b 66 6f 72 28 76 61 72 20 72 20 69 6e il);for(var r in
0250: 20 74 29 61 5b 72 5d 3d 74 5b 72 5d 3b 72 65 74 t)a[r]=t[r];ret
0260: 75 72 6e 20 73 65 74 54 69 6d 65 6f 75 74 28 66 urn setTimeout(f
0270: 75 6e 63 74 69 6f 6e 28 29 7b 74 72 79 7b 65 2e unction(){try{e.
0280: 64 69 73 70 61 74 63 68 45 76 65 6e 74 3f 65 2e dispatchEvent?e.
0290: 64 69 73 70 61 74 63 68 45 76 65 6e 74 28 61 29 dispatchEvent(a)
02a0: 3a 65 2e 66 69 72 65 45 76 65 6e 74 28 22 6f 6e :e.fireEvent("on
02b0: 22 2b 74 2e 74 79 70 65 2c 69 2e 63 72 65 61 74 "+t.type,i.creat
02c0: 65 45 76 65 6e 74 4f 62 6a 65 63 74 28 29 29 7d eEventObject())}
02d0: 63 61 74 63 68 28 72 29 7b 76 61 72 20 6f 3d 65 catch(r){var o=e
02e0: 5b 22 6c 69 73 74 65 6e 22 2b 74 2e 74 79 70 65 ["listen"+t.type
02f0: 5d 3b 69 66 28 6f 29 66 6f 72 28 76 61 72 20 73 ];if(o)for(var s
0300: 3d 30 3b 73 3c 6f 2e 6c 65 6e 67 74 68 3b 2b 2b =0;s<o.length;++
0310: 73 29 74 72 79 7b 6f 5b 73 5d 2e 63 61 6c 6c 28 s)try{o[s].call(
0320: 65 2c 61 29 7d 63 61 74 63 68 28 72 29 7b 7d 7d e,a)}catch(r){}}
0330: 6e 28 29 7d 2c 30 29 2c 74 68 69 73 7d 66 75 6e n()},0),this}fun
0340: 63 74 69 6f 6e 20 74 28 65 2c 74 2c 6e 29 7b 66 ction t(e,t,n){f
0350: 75 6e 63 74 69 6f 6e 20 69 28 65 2c 74 29 7b 74 unction i(e,t){t
0360: 72 79 7b 76 61 72 20 6e 3d 65 2e 6f 77 6e 65 72 ry{var n=e.owner
0370: 44 6f 63 75 6d 65 6e 74 3b 69 66 28 6e 2e 63 72 Document;if(n.cr
0380: 65 61 74 65 45 76 65 6e 74 4f 62 6a 65 63 74 29 eateEventObject)
0390: 7b 76 61 72 20 69 3d 6e 2e 63 72 65 61 74 65 45 {var i=n.createE
03a0: 76 65 6e 74 4f 62 6a 65 63 74 28 29 3b 65 2e 66 ventObject();e.f
03b0: 69 72 65 45 76 65 6e 74 28 22 6f 6e 22 2b 74 2c ireEvent("on"+t,
03c0: 69 29 7d 65 6c 73 65 20 69 3d 6e 2e 63 72 65 61 i)}else i=n.crea
03d0: 74 65 45 76 65 6e 74 28 22 48 54 4d 4c 45 76 65 teEvent("HTMLEve
03e0: 6e 74 73 22 29 2c 69 2e 69 6e 69 74 45 76 65 6e nts"),i.initEven
03f0: 74 28 74 2c 21 30 2c 21 30 29 2c 65 2e 64 69 73 t(t,!0,!0),e.dis
0400: 70 61 74 63 68 45 76 65 6e 74 28 69 29 7d 63 61 patchEvent(i)}ca
0410: 74 63 68 28 61 29 7b 7d 7d 76 61 72 20 61 3d 21 tch(a){}}var a=!
0420: 30 2c 72 3d 65 2e 63 6c 61 73 73 4e 61 6d 65 26 0,r=e.className&
0430: 26 2d 31 21 3d 65 2e 63 6c 61 73 73 4e 61 6d 65 &-1!=e.className
0440: 2e 69 6e 64 65 78 4f 66 28 22 66 61 6e 63 69 66 .indexOf("fancif
0450: 69 65 64 22 29 3b 69 66 28 77 69 6e 64 6f 77 2e ied");if(window.
0460: 6a 51 75 65 72 79 29 7b 76 61 72 20 6f 3d 77 69 jQuery){var o=wi
0470: 6e 64 6f 77 2e 6a 51 75 65 72 79 28 65 29 3b 74 ndow.jQuery(e);t
0480: 72 79 7b 69 66 28 6f 2e 73 65 6c 65 63 74 42 6f ry{if(o.selectBo
0490: 78 49 74 29 6f 2e 73 65 6c 65 63 74 42 6f 78 49 xIt)o.selectBoxI
04a0: 74 28 22 73 65 6c 65 63 74 4f 70 74 69 6f 6e 22 t("selectOption"
04b0: 2c 6f 2e 76 61 6c 28 29 29 3b 65 6c 73 65 20 69 ,o.val());else i
04c0: 66 28 6f 2e 64 61 74 61 28 22 63 68 6f 73 65 6e f(o.data("chosen
04d0: 22 29 7c 7c 6f 2e 63 68 6f 73 65 6e 29 6f 2e 74 ")||o.chosen)o.t
04e0: 72 69 67 67 65 72 28 22 63 68 6f 73 65 6e 3a 75 rigger("chosen:u
04f0: 70 64 61 74 65 64 22 29 2e 74 72 69 67 67 65 72 pdated").trigger
0500: 28 22 6c 69 73 7a 74 3a 75 70 64 61 74 65 64 22 ("liszt:updated"
0510: 29 3b 65 6c 73 65 20 69 66 28 6f 2e 64 61 74 61 );else if(o.data
0520: 28 22 63 68 6f 6f 73 65 72 45 6c 65 6d 65 6e 74 ("chooserElement
0530: 22 29 29 6f 2e 74 72 69 67 67 65 72 28 22 63 68 "))o.trigger("ch
0540: 61 6e 67 65 22 29 3b 65 6c 73 65 20 69 66 28 6f ange");else if(o
0550: 2e 66 61 6e 63 79 53 65 6c 65 63 74 29 6f 2e 67 .fancySelect)o.g
0560: 65 74 28 22 66 61 6e 63 79 53 65 6c 65 63 74 22 et("fancySelect"
0570: 29 2e 73 65 6c 65 63 74 28 22 76 61 6c 75 65 22 ).select("value"
0580: 2c 6f 2e 76 61 6c 28 29 29 3b 65 6c 73 65 20 69 ,o.val());else i
0590: 66 28 6f 2e 73 65 6c 65 63 74 42 6f 78 29 6f 2e f(o.selectBox)o.
05a0: 73 65 6c 65 63 74 42 6f 78 28 22 76 61 6c 75 65 selectBox("value
05b0: 22 2c 6f 2e 76 61 6c 28 29 29 3b 65 6c 73 65 20 ",o.val());else
05c0: 69 66 28 6f 2e 73 65 6c 65 63 74 72 69 63 29 6f if(o.selectric)o
05d0: 2e 73 65 6c 65 63 74 72 69 63 28 22 72 65 66 72 .selectric("refr
05e0: 65 73 68 22 29 3b 65 6c 73 65 20 69 66 28 6f 2e esh");else if(o.
05f0: 63 6f 72 65 55 49 53 65 6c 65 63 74 29 7b 76 61 coreUISelect){va
0600: 72 20 73 3d 6f 2e 64 61 74 61 28 22 63 6f 72 65 r s=o.data("core
0610: 55 49 53 65 6c 65 63 74 22 29 3b 73 2e 69 73 53 UISelect");s.isS
0620: 65 6c 65 63 74 53 68 6f 77 3d 21 30 2c 73 2e 63 electShow=!0,s.c
0630: 68 61 6e 67 65 44 72 6f 70 64 6f 77 6e 44 61 74 hangeDropdownDat
0640: 61 28 29 2c 73 2e 69 73 53 65 6c 65 63 74 53 68 a(),s.isSelectSh
0650: 6f 77 3d 21 31 7d 65 6c 73 65 20 69 66 28 6f 2e ow=!1}else if(o.
0660: 64 61 74 61 28 22 6d 79 4a 53 50 75 6c 6c 64 6f data("myJSPulldo
0670: 77 6e 4f 62 6a 65 63 74 22 29 29 7b 76 61 72 20 wnObject")){var
0680: 6c 3d 6f 2e 64 61 74 61 28 22 6d 79 4a 53 50 75 l=o.data("myJSPu
0690: 6c 6c 64 6f 77 6e 4f 62 6a 65 63 74 22 29 3b 6c lldownObject");l
06a0: 2e 73 65 74 54 6f 56 61 6c 75 65 28 6f 2e 76 61 .setToValue(o.va
06b0: 6c 28 29 29 7d 65 6c 73 65 20 69 66 28 6f 2e 66 l())}else if(o.f
06c0: 61 6e 63 79 66 69 65 6c 64 73 29 6f 2e 73 65 74 ancyfields)o.set
06d0: 56 61 6c 28 6f 2e 76 61 6c 28 29 29 3b 65 6c 73 Val(o.val());els
06e0: 65 20 69 66 28 6f 2e 64 61 74 61 28 22 73 65 6c e if(o.data("sel
06f0: 65 63 74 32 22 29 29 3b 65 6c 73 65 20 69 66 28 ect2"));else if(
0700: 6f 2e 64 61 74 61 28 22 73 65 6c 65 63 74 69 7a o.data("selectiz
0710: 65 22 29 29 61 3d 21 31 2c 6f 2e 64 61 74 61 28 e"))a=!1,o.data(
0720: 22 73 65 6c 65 63 74 69 7a 65 22 29 2e 73 65 74 "selectize").set
0730: 56 61 6c 75 65 28 6f 2e 76 61 6c 28 29 29 3b 65 Value(o.val());e
0740: 6c 73 65 20 69 66 28 6f 2e 68 61 73 43 6c 61 73 lse if(o.hasClas
0750: 73 28 22 66 61 6e 63 69 66 69 65 64 22 29 29 6f s("fancified"))o
0760: 2e 74 72 69 67 67 65 72 28 22 75 70 64 61 74 65 .trigger("update
0770: 22 29 3b 65 6c 73 65 20 69 66 28 6f 2e 73 65 6c ");else if(o.sel
0780: 65 63 74 6d 65 6e 75 29 7b 76 61 72 20 63 3d 6f ectmenu){var c=o
0790: 2e 76 61 6c 28 29 3b 74 72 79 7b 6f 2e 73 65 6c .val();try{o.sel
07a0: 65 63 74 6d 65 6e 75 28 22 76 61 6c 75 65 22 2c ectmenu("value",
07b0: 6f 5b 30 5d 2e 6f 70 74 69 6f 6e 73 5b 30 5d 2e o[0].options[0].
07c0: 76 61 6c 75 65 29 7d 63 61 74 63 68 28 64 29 7b value)}catch(d){
07d0: 7d 6f 2e 73 65 6c 65 63 74 6d 65 6e 75 28 22 76 }o.selectmenu("v
07e0: 61 6c 75 65 22 2c 63 29 7d 6f 2e 74 72 69 67 67 alue",c)}o.trigg
07f0: 65 72 28 22 63 68 61 6e 67 65 22 29 7d 63 61 74 er("change")}cat
0800: 63 68 28 64 29 7b 7d 7d 61 26 26 28 72 26 26 69 ch(d){}}a&&(r&&i
0810: 28 65 2c 22 75 70 64 61 74 65 22 29 2c 69 28 65 (e,"update"),i(e
0820: 2c 22 63 68 61 6e 67 65 22 29 2c 69 28 65 2c 22 ,"change"),i(e,"
0830: 62 6c 75 72 22 29 29 2c 6e 28 29 7d 66 75 6e 63 blur")),n()}func
0840: 74 69 6f 6e 20 6e 28 74 2c 6e 2c 69 2c 61 29 7b tion n(t,n,i,a){
0850: 76 61 72 20 72 3d 74 2e 76 61 6c 75 65 3b 65 28 var r=t.value;e(
0860: 74 2c 7b 74 79 70 65 3a 22 6b 65 79 64 6f 77 6e t,{type:"keydown
0870: 22 2c 6b 65 79 43 6f 64 65 3a 6e 2c 77 68 69 63 ",keyCode:n,whic
0880: 68 3a 6e 2c 63 68 61 72 43 6f 64 65 3a 6e 2c 62 h:n,charCode:n,b
0890: 75 62 62 6c 65 73 3a 21 30 7d 2c 66 75 6e 63 74 ubbles:!0},funct
08a0: 69 6f 6e 28 29 7b 65 28 74 2c 7b 74 79 70 65 3a ion(){e(t,{type:
08b0: 22 6b 65 79 70 72 65 73 73 22 2c 6b 65 79 43 6f "keypress",keyCo
08c0: 64 65 3a 6e 2c 77 68 69 63 68 3a 6e 2c 63 68 61 de:n,which:n,cha
08d0: 72 43 6f 64 65 3a 6e 2c 62 75 62 62 6c 65 73 3a rCode:n,bubbles:
08e0: 21 30 7d 2c 66 75 6e 63 74 69 6f 6e 28 29 7b 73 !0},function(){s
08f0: 65 74 54 69 6d 65 6f 75 74 28 66 75 6e 63 74 69 etTimeout(functi
0900: 6f 6e 28 29 7b 76 61 72 20 6f 3d 74 2e 76 61 6c on(){var o=t.val
0910: 75 65 3b 72 3d 3d 6f 26 26 28 74 2e 76 61 6c 75 ue;r==o&&(t.valu
0920: 65 3d 69 29 2c 65 28 74 2c 7b 74 79 70 65 3a 22 e=i),e(t,{type:"
0930: 69 6e 70 75 74 22 2c 6b 65 79 43 6f 64 65 3a 6e input",keyCode:n
0940: 2c 77 68 69 63 68 3a 6e 2c 63 68 61 72 43 6f 64 ,which:n,charCod
0950: 65 3a 6e 2c 62 75 62 62 6c 65 73 3a 21 30 7d 2c e:n,bubbles:!0},
0960: 66 75 6e 63 74 69 6f 6e 28 29 7b 65 28 74 2c 7b function(){e(t,{
0970: 74 79 70 65 3a 22 6b 65 79 75 70 22 2c 6b 65 79 type:"keyup",key
0980: 43 6f 64 65 3a 6e 2c 77 68 69 63 68 3a 6e 2c 63 Code:n,which:n,c
0990: 68 61 72 43 6f 64 65 3a 6e 2c 62 75 62 62 6c 65 harCode:n,bubble
09a0: 73 3a 21 30 7d 2c 66 75 6e 63 74 69 6f 6e 28 29 s:!0},function()
09b0: 7b 61 28 29 7d 29 7d 29 7d 2c 31 29 7d 29 7d 29 {a()})})},1)})})
09c0: 7d 66 75 6e 63 74 69 6f 6e 20 69 28 65 2c 74 2c }function i(e,t,
09d0: 61 2c 72 29 7b 69 66 28 21 74 7c 7c 22 22 3d 3d a,r){if(!t||""==
09e0: 74 29 72 65 74 75 72 6e 20 76 6f 69 64 20 72 28 t)return void r(
09f0: 29 3b 76 61 72 20 6f 3d 74 2e 63 68 61 72 43 6f );var o=t.charCo
0a00: 64 65 41 74 28 30 29 3b 61 2b 3d 74 2e 63 68 61 deAt(0);a+=t.cha
0a10: 72 41 74 28 30 29 2c 6e 28 65 2c 6f 2c 61 2c 66 rAt(0),n(e,o,a,f
0a20: 75 6e 63 74 69 6f 6e 28 29 7b 69 28 65 2c 74 2e unction(){i(e,t.
0a30: 73 75 62 73 74 72 69 6e 67 28 31 29 2c 61 2c 72 substring(1),a,r
0a40: 29 7d 29 7d 66 75 6e 63 74 69 6f 6e 20 61 28 74 )})}function a(t
0a50: 2c 6e 2c 61 29 7b 65 28 74 2c 7b 74 79 70 65 3a ,n,a){e(t,{type:
0a60: 22 66 6f 63 75 73 22 7d 2c 66 75 6e 63 74 69 6f "focus"},functio
0a70: 6e 28 29 7b 65 28 74 2c 7b 74 79 70 65 3a 22 63 n(){e(t,{type:"c
0a80: 6c 69 63 6b 22 7d 2c 66 75 6e 63 74 69 6f 6e 28 lick"},function(
0a90: 29 7b 69 28 74 2c 6e 2c 22 22 2c 66 75 6e 63 74 ){i(t,n,"",funct
0aa0: 69 6f 6e 28 29 7b 65 28 74 2c 7b 74 79 70 65 3a ion(){e(t,{type:
0ab0: 22 63 68 61 6e 67 65 22 7d 2c 66 75 6e 63 74 69 "change"},functi
0ac0: 6f 6e 28 29 7b 65 28 74 2c 7b 74 79 70 65 3a 22 on(){e(t,{type:"
0ad0: 62 6c 75 72 22 7d 2c 66 75 6e 63 74 69 6f 6e 28 blur"},function(
0ae0: 29 7b 65 28 64 6f 63 75 6d 65 6e 74 2c 7b 74 79 ){e(document,{ty
0af0: 70 65 3a 22 61 62 69 6e 65 46 69 6c 6c 65 64 22 pe:"abineFilled"
0b00: 7d 2c 66 75 6e 63 74 69 6f 6e 28 29 7b 61 28 29 },function(){a()
0b10: 7d 29 7d 29 7d 29 7d 29 7d 29 7d 29 7d 66 75 6e })})})})})})}fun
0b20: 63 74 69 6f 6e 20 72 28 6e 2c 69 2c 61 2c 72 29 ction r(n,i,a,r)
0b30: 7b 76 61 72 20 6f 3d 28 69 7c 7c 22 22 29 2e 74 {var o=(i||"").t
0b40: 6f 4c 6f 77 65 72 43 61 73 65 28 29 2c 73 3d 66 oLowerCase(),s=f
0b50: 75 6e 63 74 69 6f 6e 28 29 7b 65 28 64 6f 63 75 unction(){e(docu
0b60: 6d 65 6e 74 2c 7b 74 79 70 65 3a 22 61 62 69 6e ment,{type:"abin
0b70: 65 46 69 6c 6c 65 64 22 7d 2c 66 75 6e 63 74 69 eFilled"},functi
0b80: 6f 6e 28 29 7b 72 28 29 7d 29 7d 2c 6c 3d 21 31 on(){r()})},l=!1
0b90: 2c 63 3d 21 31 2c 64 3d 6e 2e 67 65 74 45 6c 65 ,c=!1,d=n.getEle
0ba0: 6d 65 6e 74 73 42 79 54 61 67 4e 61 6d 65 28 22 mentsByTagName("
0bb0: 6f 70 74 69 6f 6e 22 29 3b 69 66 28 64 26 26 64 option");if(d&&d
0bc0: 2e 6c 65 6e 67 74 68 3e 30 29 7b 66 6f 72 28 76 .length>0){for(v
0bd0: 61 72 20 75 3d 2d 31 2c 6d 3d 30 3b 6d 3c 64 2e ar u=-1,m=0;m<d.
0be0: 6c 65 6e 67 74 68 3b 6d 2b 2b 29 7b 76 61 72 20 length;m++){var
0bf0: 68 3d 28 64 5b 6d 5d 2e 74 65 78 74 7c 7c 22 22 h=(d[m].text||""
0c00: 29 2e 74 6f 4c 6f 77 65 72 43 61 73 65 28 29 3b ).toLowerCase();
0c10: 69 66 28 64 5b 6d 5d 2e 67 65 74 41 74 74 72 69 if(d[m].getAttri
0c20: 62 75 74 65 28 22 76 61 6c 75 65 22 29 3d 3d 69 bute("value")==i
0c30: 7c 7c 68 3d 3d 6f 29 7b 64 5b 6d 5d 2e 73 65 6c ||h==o){d[m].sel
0c40: 65 63 74 65 64 7c 7c 28 6c 3d 21 30 29 2c 63 3d ected||(l=!0),c=
0c50: 21 30 2c 64 5b 6d 5d 2e 73 65 6c 65 63 74 65 64 !0,d[m].selected
0c60: 3d 21 30 3b 62 72 65 61 6b 7d 2d 31 3d 3d 75 26 =!0;break}-1==u&
0c70: 26 2d 31 21 3d 68 2e 69 6e 64 65 78 4f 66 28 6f &-1!=h.indexOf(o
0c80: 29 26 26 28 75 3d 6d 29 7d 63 7c 7c 2d 31 3d 3d )&&(u=m)}c||-1==
0c90: 75 7c 7c 61 7c 7c 64 5b 75 5d 2e 73 65 6c 65 63 u||a||d[u].selec
0ca0: 74 65 64 7c 7c 28 6c 3d 21 30 2c 64 5b 75 5d 2e ted||(l=!0,d[u].
0cb0: 73 65 6c 65 63 74 65 64 3d 21 30 29 7d 6e 2e 73 selected=!0)}n.s
0cc0: 65 74 41 74 74 72 69 62 75 74 65 28 22 61 62 69 etAttribute("abi
0cd0: 6e 65 46 69 6c 6c 52 65 73 70 6f 6e 73 65 22 2c neFillResponse",
0ce0: 63 29 2c 6c 3f 74 28 6e 2c 69 2c 73 29 3a 73 28 c),l?t(n,i,s):s(
0cf0: 29 7d 66 75 6e 63 74 69 6f 6e 20 6f 28 29 7b 76 )}function o(){v
0d00: 61 72 20 65 3d 64 6f 63 75 6d 65 6e 74 2e 67 65 ar e=document.ge
0d10: 74 45 6c 65 6d 65 6e 74 73 42 79 43 6c 61 73 73 tElementsByClass
0d20: 4e 61 6d 65 28 22 61 62 69 6e 65 46 69 6c 6c 54 Name("abineFillT
0d30: 61 72 67 65 74 22 29 3b 69 66 28 65 2e 6c 65 6e arget");if(e.len
0d40: 67 74 68 3e 30 29 72 65 74 75 72 6e 20 65 5b 30 gth>0)return e[0
0d50: 5d 3b 66 6f 72 28 76 61 72 20 74 3d 30 3b 74 3c ];for(var t=0;t<
0d60: 66 72 61 6d 65 73 2e 6c 65 6e 67 74 68 3b 74 2b frames.length;t+
0d70: 2b 29 74 72 79 7b 76 61 72 20 65 3d 66 72 61 6d +)try{var e=fram
0d80: 65 73 5b 74 5d 2e 64 6f 63 75 6d 65 6e 74 2e 67 es[t].document.g
0d90: 65 74 45 6c 65 6d 65 6e 74 73 42 79 43 6c 61 73 etElementsByClas
0da0: 73 4e 61 6d 65 28 22 61 62 69 6e 65 46 69 6c 6c sName("abineFill
0db0: 54 61 72 67 65 74 22 29 3b 69 66 28 65 2e 6c 65 Target");if(e.le
0dc0: 6e 67 74 68 3e 30 29 72 65 74 75 72 6e 20 65 5b ngth>0)return e[
0dd0: 30 5d 7d 63 61 74 63 68 28 6e 29 7b 7d 72 65 74 0]}catch(n){}ret
0de0: 75 72 6e 20 6e 75 6c 6c 7d 66 75 6e 63 74 69 6f urn null}functio
0df0: 6e 20 73 28 29 7b 76 61 72 20 6e 3d 64 6f 63 75 n s(){var n=docu
0e00: 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c 65 6d 65 ment.createEleme
0e10: 6e 74 28 22 64 69 76 22 29 3b 6e 2e 69 64 3d 22 nt("div");n.id="
0e20: 61 62 69 6e 65 46 69 6c 6c 45 6c 65 6d 65 6e 74 abineFillElement
0e30: 22 2c 22 75 6e 64 65 66 69 6e 65 64 22 21 3d 74 ","undefined"!=t
0e40: 79 70 65 6f 66 20 70 61 79 70 61 6c 26 26 6e 2e ypeof paypal&&n.
0e50: 73 65 74 41 74 74 72 69 62 75 74 65 28 22 64 61 setAttribute("da
0e60: 74 61 2d 70 61 79 70 61 6c 22 2c 22 31 22 29 2c ta-paypal","1"),
0e70: 22 75 6e 64 65 66 69 6e 65 64 22 21 3d 74 79 70 "undefined"!=typ
0e80: 65 6f 66 20 4d 61 73 74 65 72 50 61 73 73 26 26 eof MasterPass&&
0e90: 6e 2e 73 65 74 41 74 74 72 69 62 75 74 65 28 22 n.setAttribute("
0ea0: 64 61 74 61 2d 6d 61 73 74 65 72 70 61 73 73 22 data-masterpass"
0eb0: 2c 22 31 22 29 2c 64 6f 63 75 6d 65 6e 74 2e 64 ,"1"),document.d
0ec0: 6f 63 75 6d 65 6e 74 45 6c 65 6d 65 6e 74 2e 61 ocumentElement.a
0ed0: 70 70 65 6e 64 43 68 69 6c 64 28 6e 29 2c 6e 2e ppendChild(n),n.
0ee0: 61 64 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 addEventListener
0ef0: 28 22 66 69 6c 6c 22 2c 66 75 6e 63 74 69 6f 6e ("fill",function
0f00: 28 29 7b 76 61 72 20 74 3d 6f 28 29 3b 69 66 28 (){var t=o();if(
0f10: 74 29 7b 76 61 72 20 69 3d 6e 2e 67 65 74 41 74 t){var i=n.getAt
0f20: 74 72 69 62 75 74 65 28 22 76 61 6c 75 65 22 29 tribute("value")
0f30: 3b 61 28 74 2c 69 2c 66 75 6e 63 74 69 6f 6e 28 ;a(t,i,function(
0f40: 29 7b 7d 29 7d 65 6c 73 65 20 65 28 64 6f 63 75 ){})}else e(docu
0f50: 6d 65 6e 74 2c 7b 74 79 70 65 3a 22 61 62 69 6e ment,{type:"abin
0f60: 65 46 69 6c 6c 65 64 22 7d 2c 66 75 6e 63 74 69 eFilled"},functi
0f70: 6f 6e 28 29 7b 7d 29 7d 2c 21 31 29 2c 6e 2e 61 on(){})},!1),n.a
0f80: 64 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 ddEventListener(
0f90: 22 66 69 6c 6c 53 65 6c 65 63 74 22 2c 66 75 6e "fillSelect",fun
0fa0: 63 74 69 6f 6e 28 29 7b 76 61 72 20 74 3d 6f 28 ction(){var t=o(
0fb0: 29 3b 69 66 28 74 29 7b 76 61 72 20 69 3d 6e 2e );if(t){var i=n.
0fc0: 67 65 74 41 74 74 72 69 62 75 74 65 28 22 76 61 getAttribute("va
0fd0: 6c 75 65 22 29 2c 61 3d 21 21 6e 2e 67 65 74 41 lue"),a=!!n.getA
0fe0: 74 74 72 69 62 75 74 65 28 22 73 6b 69 70 50 61 ttribute("skipPa
0ff0: 72 74 69 61 6c 22 29 3b 72 28 74 2c 69 2c 61 2c rtial");r(t,i,a,
1000: 66 75 6e 63 74 69 6f 6e 28 29 7b 7d 29 7d 65 6c function(){})}el
1010: 73 65 20 65 28 64 6f 63 75 6d 65 6e 74 2c 7b 74 se e(document,{t
1020: 79 70 65 3a 22 61 62 69 6e 65 46 69 6c 6c 65 64 ype:"abineFilled
1030: 22 7d 2c 66 75 6e 63 74 69 6f 6e 28 29 7b 7d 29 "},function(){})
1040: 7d 29 2c 6e 2e 61 64 64 45 76 65 6e 74 4c 69 73 }),n.addEventLis
1050: 74 65 6e 65 72 28 22 74 72 69 67 67 65 72 43 68 tener("triggerCh
1060: 61 6e 67 65 22 2c 66 75 6e 63 74 69 6f 6e 28 29 ange",function()
1070: 7b 76 61 72 20 69 3d 6f 28 29 3b 69 66 28 69 29 {var i=o();if(i)
1080: 7b 76 61 72 20 61 3d 6e 2e 67 65 74 41 74 74 72 {var a=n.getAttr
1090: 69 62 75 74 65 28 22 76 61 6c 75 65 22 29 3b 69 ibute("value");i
10a0: 2e 6e 6f 64 65 4e 61 6d 65 2e 6d 61 74 63 68 28 .nodeName.match(
10b0: 2f 73 65 6c 65 63 74 2f 69 29 3f 74 28 69 2c 61 /select/i)?t(i,a
10c0: 2c 66 75 6e 63 74 69 6f 6e 28 29 7b 7d 29 3a 65 ,function(){}):e
10d0: 28 69 2c 7b 74 79 70 65 3a 22 63 68 61 6e 67 65 (i,{type:"change
10e0: 22 7d 2c 66 75 6e 63 74 69 6f 6e 28 29 7b 65 28 "},function(){e(
10f0: 69 2c 7b 74 79 70 65 3a 22 62 6c 75 72 22 7d 2c i,{type:"blur"},
1100: 66 75 6e 63 74 69 6f 6e 28 29 7b 7d 29 7d 29 7d function(){})})}
1110: 7d 29 7d 73 28 29 7d 28 29 7d 29 28 29 3c 2f 73 })}s()}()})()</s
1120: 63 72 69 70 74 3e 3c 2f 68 65 61 64 3e 0a 3c 62 cript></head>.<b
1130: 6f 64 79 20 64 61 74 61 2d 6c 69 6e 6b 36 34 77 ody data-link64w
1140: 61 74 63 68 65 64 3d 22 31 22 3e 0a 0a 0a 0a 0a atched="1">.....
1150: 3c 68 31 3e 55 73 69 6e 67 20 4d 61 74 63 68 3c <h1>Using Match<
1160: 2f 68 31 3e 0a 3c 68 32 3e 52 2e 20 4b 65 6e 74 /h1>.<h2>R. Kent
1170: 20 44 79 62 76 69 67 3c 2f 68 32 3e 0a 3c 68 33 Dybvig</h2>.<h3
1180: 3e 4a 61 6e 75 61 72 79 20 31 37 2c 20 32 30 31 >January 17, 201
1190: 30 3c 2f 68 33 3e 0a 0a 0a 3c 70 3e 0a 0a 3c 2f 0</h3>...<p>..</
11a0: 70 3e 3c 74 61 62 6c 65 20 63 65 6c 6c 70 61 64 p><table cellpad
11b0: 64 69 6e 67 3d 22 30 22 20 63 65 6c 6c 73 70 61 ding="0" cellspa
11c0: 63 69 6e 67 3d 22 30 22 3e 0a 0a 20 20 0a 20 20 cing="0">.. .
11d0: 0a 20 0a 3c 2f 74 61 62 6c 65 3e 0a 0a 0a 3c 70 . .</table>...<p
11e0: 3e 0a 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 >.This document
11f0: 64 65 73 63 72 69 62 65 73 20 61 20 70 61 74 74 describes a patt
1200: 65 72 6e 20 6d 61 74 63 68 65 72 2c 20 75 6e 69 ern matcher, uni
1210: 6d 61 67 69 6e 61 74 69 76 65 6c 79 20 63 61 6c maginatively cal
1220: 6c 65 64 0a 3c 74 74 3e 6d 61 74 63 68 3c 2f 74 led.<tt>match</t
1230: 74 3e 2c 20 74 68 65 20 73 6f 75 72 63 65 20 63 t>, the source c
1240: 6f 64 65 20 66 6f 72 20 77 68 69 63 68 20 69 73 ode for which is
1250: 20 61 76 61 69 6c 61 62 6c 65 20 61 74 3a 0a 0a available at:..
1260: 3c 2f 70 3e 3c 70 3e 0a 3c 61 20 63 6c 61 73 73 </p><p>.<a class
1270: 3d 22 72 65 66 22 20 68 72 65 66 3d 22 68 74 74 ="ref" href="htt
1280: 70 3a 2f 2f 77 77 77 2e 63 73 2e 69 6e 64 69 61 p://www.cs.india
1290: 6e 61 2e 65 64 75 2f 63 68 65 7a 73 63 68 65 6d na.edu/chezschem
12a0: 65 2f 6d 61 74 63 68 2f 6d 61 74 63 68 2e 73 73 e/match/match.ss
12b0: 22 3e 68 74 74 70 3a 2f 2f 77 77 77 2e 63 73 2e ">http://www.cs.
12c0: 69 6e 64 69 61 6e 61 2e 65 64 75 2f 63 68 65 7a indiana.edu/chez
12d0: 73 63 68 65 6d 65 2f 6d 61 74 63 68 2f 6d 61 74 scheme/match/mat
12e0: 63 68 2e 73 73 3c 2f 61 3e 0a 0a 3c 2f 70 3e 3c ch.ss</a>..</p><
12f0: 70 3e 0a 41 20 3c 74 74 3e 6d 61 74 63 68 3c 2f p>.A <tt>match</
1300: 74 74 3e 20 65 78 70 72 65 73 73 69 6f 6e 20 6c tt> expression l
1310: 6f 6f 6b 73 20 61 20 6c 6f 74 20 6c 69 6b 65 20 ooks a lot like
1320: 61 20 3c 74 74 3e 63 61 73 65 3c 2f 74 74 3e 20 a <tt>case</tt>
1330: 65 78 70 72 65 73 73 69 6f 6e 2c 0a 65 78 63 65 expression,.exce
1340: 70 74 20 74 68 61 74 20 74 68 65 20 6b 65 79 73 pt that the keys
1350: 20 61 72 65 20 72 65 70 6c 61 63 65 64 20 77 69 are replaced wi
1360: 74 68 20 61 20 70 61 74 74 65 72 6e 20 74 6f 20 th a pattern to
1370: 62 65 20 6d 61 74 63 68 65 64 20 61 67 61 69 6e be matched again
1380: 73 74 0a 74 68 65 20 69 6e 70 75 74 2e 0a 41 20 st.the input..A
1390: 3c 74 74 3e 6d 61 74 63 68 3c 2f 74 74 3e 20 65 <tt>match</tt> e
13a0: 78 70 72 65 73 73 69 6f 6e 20 68 61 73 20 74 68 xpression has th
13b0: 65 20 67 65 6e 65 72 61 6c 20 66 6f 72 6d 20 62 e general form b
13c0: 65 6c 6f 77 2e 0a 0a 3c 2f 70 3e 3c 70 3e 0a 0a elow...</p><p>..
13d0: 3c 2f 70 3e 3c 70 3e 3c 74 74 3e 28 6d 61 74 63 </p><p><tt>(matc
13e0: 68 26 6e 62 73 70 3b 3c 69 3e 69 6e 70 75 74 2d h <i>input-
13f0: 65 78 70 72 3c 2f 69 3e 26 6e 62 73 70 3b 3c 69 expr</i> <i
1400: 3e 63 6c 61 75 73 65 3c 2f 69 3e 29 3c 2f 74 74 >clause</i>)</tt
1410: 3e 0a 3c 2f 70 3e 3c 70 3e 45 61 63 68 20 63 6c >.</p><p>Each cl
1420: 61 75 73 65 20 63 6f 6e 73 69 73 74 73 20 6f 66 ause consists of
1430: 20 61 6e 20 69 6e 70 75 74 20 70 61 74 74 65 72 an input patter
1440: 6e 2c 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 67 n, an optional g
1450: 75 61 72 64 2c 20 61 6e 64 20 61 0a 73 65 74 20 uard, and a.set
1460: 6f 66 20 65 78 70 72 65 73 73 69 6f 6e 73 2e 0a of expressions..
1470: 0a 3c 2f 70 3e 3c 70 3e 0a 0a 3c 2f 70 3e 3c 70 .</p><p>..</p><p
1480: 3e 3c 74 74 3e 5b 3c 69 3e 69 6e 70 75 74 2d 70 ><tt>[<i>input-p
1490: 61 74 74 65 72 6e 3c 2f 69 3e 26 6e 62 73 70 3b attern</i>
14a0: 3c 69 3e 65 78 70 72 31 3c 2f 69 3e 26 6e 62 73 <i>expr1</i>&nbs
14b0: 70 3b 3c 69 3e 65 78 70 72 32 3c 2f 69 3e 26 6e p;<i>expr2</i>&n
14c0: 62 73 70 3b 2e 2e 2e 5d 3c 2f 74 74 3e 0a 3c 2f bsp;...]</tt>.</
14d0: 70 3e 3c 70 3e 6f 72 0a 0a 3c 2f 70 3e 3c 70 3e p><p>or..</p><p>
14e0: 0a 0a 3c 2f 70 3e 3c 70 3e 3c 74 74 3e 5b 3c 69 ..</p><p><tt>[<i
14f0: 3e 69 6e 70 75 74 2d 70 61 74 74 65 72 6e 3c 2f >input-pattern</
1500: 69 3e 26 6e 62 73 70 3b 28 67 75 61 72 64 26 6e i> (guard&n
1510: 62 73 70 3b 3c 69 3e 67 75 61 72 64 2d 65 78 70 bsp;<i>guard-exp
1520: 72 3c 2f 69 3e 26 6e 62 73 70 3b 2e 2e 2e 29 26 r</i> ...)&
1530: 6e 62 73 70 3b 3c 69 3e 65 78 70 72 31 3c 2f 69 nbsp;<i>expr1</i
1540: 3e 26 6e 62 73 70 3b 3c 69 3e 65 78 70 72 32 3c > <i>expr2<
1550: 2f 69 3e 26 6e 62 73 70 3b 2e 2e 2e 5d 3c 2f 74 /i> ...]</t
1560: 74 3e 0a 3c 2f 70 3e 3c 70 3e 41 73 20 77 69 74 t>.</p><p>As wit
1570: 68 20 3c 74 74 3e 63 61 73 65 3c 2f 74 74 3e 2c h <tt>case</tt>,
1580: 20 74 68 65 20 69 6e 70 75 74 20 65 78 70 72 65 the input expre
1590: 73 73 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74 ssion is evaluat
15a0: 65 64 20 74 6f 20 70 72 6f 64 75 63 65 0a 74 68 ed to produce.th
15b0: 65 20 69 6e 70 75 74 20 76 61 6c 75 65 2c 20 61 e input value, a
15c0: 6e 64 20 74 68 65 20 66 69 72 73 74 20 63 6c 61 nd the first cla
15d0: 75 73 65 20 74 68 65 20 69 6e 70 75 74 20 76 61 use the input va
15e0: 6c 75 65 20 6d 61 74 63 68 65 73 2c 0a 69 66 20 lue matches,.if
15f0: 61 6e 79 2c 20 69 73 20 73 65 6c 65 63 74 65 64 any, is selected
1600: 2e 0a 54 68 65 20 6f 75 74 70 75 74 20 65 78 70 ..The output exp
1610: 72 65 73 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 ressions of the
1620: 73 65 6c 65 63 74 65 64 20 63 6c 61 75 73 65 20 selected clause
1630: 61 72 65 20 65 76 61 6c 75 61 74 65 64 20 69 6e are evaluated in
1640: 20 73 65 71 75 65 6e 63 65 2c 0a 61 6e 64 20 74 sequence,.and t
1650: 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 he value of the
1660: 6c 61 73 74 20 65 78 70 72 65 73 73 69 6f 6e 20 last expression
1670: 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 0a 3c 2f is returned...</
1680: 70 3e 3c 70 3e 0a 41 6e 20 69 6e 70 75 74 20 76 p><p>.An input v
1690: 61 6c 75 65 20 6d 61 74 63 68 65 73 20 61 20 63 alue matches a c
16a0: 6c 61 75 73 65 20 69 66 20 69 74 20 66 69 74 73 lause if it fits
16b0: 20 74 68 65 20 63 6c 61 75 73 65 27 73 20 70 61 the clause's pa
16c0: 74 74 65 72 6e 20 61 6e 64 0a 70 61 73 73 65 73 ttern and.passes
16d0: 20 74 68 65 20 63 6c 61 75 73 65 27 73 20 67 75 the clause's gu
16e0: 61 72 64 73 2c 20 69 66 20 61 6e 79 2e 0a 50 61 ards, if any..Pa
16f0: 74 74 65 72 6e 73 20 6d 61 79 20 63 6f 6e 74 61 tterns may conta
1700: 69 6e 20 73 79 6d 62 6f 6c 69 63 20 63 6f 6e 73 in symbolic cons
1710: 74 61 6e 74 73 2c 20 77 68 69 63 68 20 6d 75 73 tants, which mus
1720: 74 20 6d 61 74 63 68 20 65 78 61 63 74 6c 79 2c t match exactly,
1730: 20 61 6e 64 0a 70 61 74 74 65 72 6e 20 76 61 72 and.pattern var
1740: 69 61 62 6c 65 73 2c 20 77 68 69 63 68 20 6d 61 iables, which ma
1750: 74 63 68 20 61 6e 79 20 69 6e 70 75 74 2e 20 20 tch any input.
1760: 0a 50 61 74 74 65 72 6e 20 76 61 72 69 61 62 6c .Pattern variabl
1770: 65 73 20 61 72 65 20 70 72 65 66 69 78 65 64 20 es are prefixed
1780: 62 79 20 63 6f 6d 6d 61 73 3b 20 73 79 6d 62 6f by commas; symbo
1790: 6c 69 63 20 63 6f 6e 73 74 61 6e 74 73 20 61 72 lic constants ar
17a0: 65 20 6e 6f 74 2e 0a 0a 3c 2f 70 3e 3c 70 3e 0a e not...</p><p>.
17b0: 0a 3c 2f 70 3e 3c 70 3e 3c 74 74 3e 28 6d 61 74 .</p><p><tt>(mat
17c0: 63 68 26 6e 62 73 70 3b 27 28 61 26 6e 62 73 70 ch '(a 
17d0: 3b 31 37 26 6e 62 73 70 3b 33 37 29 3c 62 72 3e ;17 37)<br>
17e0: 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 28 .. [(
17f0: 61 26 6e 62 73 70 3b 2c 78 29 26 6e 62 73 70 3b a ,x)
1800: 31 5d 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 1]<br>.. &n
1810: 62 73 70 3b 5b 28 62 26 6e 62 73 70 3b 2c 78 26 bsp;[(b ,x&
1820: 6e 62 73 70 3b 2c 79 29 26 6e 62 73 70 3b 32 5d nbsp;,y) 2]
1830: 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 <br>.. &nbs
1840: 70 3b 5b 28 61 26 6e 62 73 70 3b 2c 78 26 6e 62 p;[(a ,x&nb
1850: 73 70 3b 2c 79 29 26 6e 62 73 70 3b 33 5d 29 26 sp;,y) 3])&
1860: 6e 62 73 70 3b 3c 69 6d 67 20 73 72 63 3d 22 6d nbsp;<img src="m
1870: 61 74 63 68 5f 66 69 6c 65 73 2f 30 2e 67 69 66 atch_files/0.gif
1880: 22 20 61 6c 74 3d 22 26 6c 74 3b 67 72 61 70 68 " alt="<graph
1890: 69 63 26 67 74 3b 22 3e 26 6e 62 73 70 3b 33 3c ic>"> 3<
18a0: 2f 74 74 3e 0a 3c 2f 70 3e 3c 70 3e 54 68 65 20 /tt>.</p><p>The
18b0: 66 69 72 73 74 20 63 6c 61 75 73 65 20 66 61 69 first clause fai
18c0: 6c 73 20 74 6f 20 6d 61 74 63 68 20 62 65 63 61 ls to match beca
18d0: 75 73 65 20 74 68 65 72 65 20 61 72 65 20 74 68 use there are th
18e0: 72 65 65 20 69 74 65 6d 73 20 69 6e 20 74 68 65 ree items in the
18f0: 0a 69 6e 70 75 74 20 6c 69 73 74 2c 20 61 6e 64 .input list, and
1900: 20 74 68 65 20 70 61 74 74 65 72 6e 20 68 61 73 the pattern has
1910: 20 6f 6e 6c 79 20 74 77 6f 2e 0a 54 68 65 20 73 only two..The s
1920: 65 63 6f 6e 64 20 63 6c 61 75 73 65 20 66 61 69 econd clause fai
1930: 6c 73 20 62 65 63 61 75 73 65 20 3c 74 74 3e 62 ls because <tt>b
1940: 3c 2f 74 74 3e 20 64 6f 65 73 20 6e 6f 74 20 6d </tt> does not m
1950: 61 74 63 68 20 3c 74 74 3e 61 3c 2f 74 74 3e 2e atch <tt>a</tt>.
1960: 0a 0a 3c 2f 70 3e 3c 70 3e 0a 49 6e 20 74 68 65 ..</p><p>.In the
1970: 20 6f 75 74 70 75 74 20 65 78 70 72 65 73 73 69 output expressi
1980: 6f 6e 2c 20 74 68 65 20 76 61 6c 75 65 73 20 6f on, the values o
1990: 66 20 74 68 65 20 70 61 74 74 65 72 6e 20 76 61 f the pattern va
19a0: 72 69 61 62 6c 65 73 20 61 72 65 0a 62 6f 75 6e riables are.boun
19b0: 64 20 74 6f 20 74 68 65 20 63 6f 72 72 65 73 70 d to the corresp
19c0: 6f 6e 64 69 6e 67 20 70 69 65 63 65 73 20 6f 66 onding pieces of
19d0: 20 69 6e 70 75 74 2e 0a 0a 3c 2f 70 3e 3c 70 3e input...</p><p>
19e0: 0a 0a 3c 2f 70 3e 3c 70 3e 3c 74 74 3e 28 6d 61 ..</p><p><tt>(ma
19f0: 74 63 68 26 6e 62 73 70 3b 27 28 61 26 6e 62 73 tch '(a&nbs
1a00: 70 3b 31 37 26 6e 62 73 70 3b 33 37 29 3c 62 72 p;17 37)<br
1a10: 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b >.. [
1a20: 28 61 26 6e 62 73 70 3b 2c 78 29 26 6e 62 73 70 (a ,x) 
1a30: 3b 28 2d 26 6e 62 73 70 3b 78 29 5d 3c 62 72 3e ;(- x)]<br>
1a40: 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 28 .. [(
1a50: 62 26 6e 62 73 70 3b 2c 78 26 6e 62 73 70 3b 2c b ,x ,
1a60: 79 29 26 6e 62 73 70 3b 28 2b 26 6e 62 73 70 3b y) (+
1a70: 78 26 6e 62 73 70 3b 79 29 5d 3c 62 72 3e 0a 0a x y)]<br>..
1a80: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 28 61 26 [(a&
1a90: 6e 62 73 70 3b 2c 78 26 6e 62 73 70 3b 2c 79 29 nbsp;,x ,y)
1aa0: 26 6e 62 73 70 3b 28 2a 26 6e 62 73 70 3b 78 26 (* x&
1ab0: 6e 62 73 70 3b 79 29 5d 29 26 6e 62 73 70 3b 3c nbsp;y)]) <
1ac0: 69 6d 67 20 73 72 63 3d 22 6d 61 74 63 68 5f 66 img src="match_f
1ad0: 69 6c 65 73 2f 30 2e 67 69 66 22 20 61 6c 74 3d iles/0.gif" alt=
1ae0: 22 26 6c 74 3b 67 72 61 70 68 69 63 26 67 74 3b "<graphic>
1af0: 22 3e 26 6e 62 73 70 3b 36 32 39 3c 2f 74 74 3e "> 629</tt>
1b00: 0a 3c 2f 70 3e 3c 70 3e 57 68 65 6e 20 66 6f 6c .</p><p>When fol
1b10: 6c 6f 77 65 64 20 62 79 20 61 6e 20 65 6c 6c 69 lowed by an elli
1b20: 70 73 69 73 20 28 3c 74 74 3e 2e 2e 2e 3c 2f 74 psis (<tt>...</t
1b30: 74 3e 29 2c 20 61 20 70 61 74 74 65 72 6e 20 76 t>), a pattern v
1b40: 61 72 69 61 62 6c 65 0a 72 65 70 72 65 73 65 6e ariable.represen
1b50: 74 73 20 61 20 73 65 71 75 65 6e 63 65 20 6f 66 ts a sequence of
1b60: 20 69 6e 70 75 74 20 76 61 6c 75 65 73 2e 0a 0a input values...
1b70: 3c 2f 70 3e 3c 70 3e 0a 0a 3c 2f 70 3e 3c 70 3e </p><p>..</p><p>
1b80: 3c 74 74 3e 28 6d 61 74 63 68 26 6e 62 73 70 3b <tt>(match
1b90: 27 28 61 26 6e 62 73 70 3b 31 37 26 6e 62 73 70 '(a 17 
1ba0: 3b 33 37 29 26 6e 62 73 70 3b 5b 28 61 26 6e 62 ;37) [(a&nb
1bb0: 73 70 3b 2c 78 2a 26 6e 62 73 70 3b 2e 2e 2e 29 sp;,x* ...)
1bc0: 26 6e 62 73 70 3b 78 2a 5d 29 26 6e 62 73 70 3b x*])
1bd0: 3c 69 6d 67 20 73 72 63 3d 22 6d 61 74 63 68 5f <img src="match_
1be0: 66 69 6c 65 73 2f 30 2e 67 69 66 22 20 61 6c 74 files/0.gif" alt
1bf0: 3d 22 26 6c 74 3b 67 72 61 70 68 69 63 26 67 74 ="<graphic>
1c00: 3b 22 3e 26 6e 62 73 70 3b 28 31 37 26 6e 62 73 ;"> (17&nbs
1c10: 70 3b 33 37 29 3c 2f 74 74 3e 0a 3c 2f 70 3e 3c p;37)</tt>.</p><
1c20: 70 3e 42 79 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c p>By convention,
1c30: 20 77 65 20 70 6c 61 63 65 20 61 20 3c 74 74 3e we place a <tt>
1c40: 2a 3c 2f 74 74 3e 20 73 75 66 66 69 78 20 6f 6e *</tt> suffix on
1c50: 20 65 61 63 68 20 70 61 74 74 65 72 6e 20 76 61 each pattern va
1c60: 72 69 61 62 6c 65 0a 74 68 61 74 20 6d 61 74 63 riable.that matc
1c70: 68 65 73 20 61 20 73 65 71 75 65 6e 63 65 20 6f hes a sequence o
1c80: 66 20 69 6e 70 75 74 20 65 78 70 72 65 73 73 69 f input expressi
1c90: 6f 6e 73 2e 0a 54 68 69 73 20 69 73 20 6a 75 73 ons..This is jus
1ca0: 74 20 61 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 20 t a convention,
1cb0: 68 6f 77 65 76 65 72 2c 20 61 6e 64 20 6e 6f 74 however, and not
1cc0: 20 70 61 72 74 20 6f 66 20 74 68 65 20 73 79 6e part of the syn
1cd0: 74 61 78 20 6f 66 0a 3c 74 74 3e 6d 61 74 63 68 tax of.<tt>match
1ce0: 3c 2f 74 74 3e 2e 0a 0a 3c 2f 70 3e 3c 70 3e 0a </tt>...</p><p>.
1cf0: 45 6c 6c 69 70 73 65 73 20 63 61 6e 20 66 6f 6c Ellipses can fol
1d00: 6c 6f 77 20 61 20 73 74 72 75 63 74 75 72 65 64 low a structured
1d10: 20 70 61 74 74 65 72 6e 20 63 6f 6e 74 61 69 6e pattern contain
1d20: 69 6e 67 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 0a ing one or more.
1d30: 70 61 74 74 65 72 6e 20 76 61 72 69 61 62 6c 65 pattern variable
1d40: 73 2e 0a 0a 3c 2f 70 3e 3c 70 3e 0a 0a 3c 2f 70 s...</p><p>..</p
1d50: 3e 3c 70 3e 3c 74 74 3e 28 6d 61 74 63 68 26 6e ><p><tt>(match&n
1d60: 62 73 70 3b 27 28 73 61 79 26 6e 62 73 70 3b 28 bsp;'(say (
1d70: 61 26 6e 62 73 70 3b 74 69 6d 65 29 26 6e 62 73 a time)&nbs
1d80: 70 3b 28 73 74 69 74 63 68 26 6e 62 73 70 3b 73 p;(stitch s
1d90: 61 76 65 73 29 26 6e 62 73 70 3b 28 69 6e 26 6e aves) (in&n
1da0: 62 73 70 3b 6e 69 6e 65 29 29 3c 62 72 3e 0a 0a bsp;nine))<br>..
1db0: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 28 73 61 [(sa
1dc0: 79 26 6e 62 73 70 3b 28 2c 78 2a 26 6e 62 73 70 y (,x* 
1dd0: 3b 2c 79 2a 29 26 6e 62 73 70 3b 2e 2e 2e 29 26 ;,y*) ...)&
1de0: 6e 62 73 70 3b 28 61 70 70 65 6e 64 26 6e 62 73 nbsp;(append&nbs
1df0: 70 3b 78 2a 26 6e 62 73 70 3b 79 2a 29 5d 29 26 p;x* y*)])&
1e00: 6e 62 73 70 3b 3c 69 6d 67 20 73 72 63 3d 22 6d nbsp;<img src="m
1e10: 61 74 63 68 5f 66 69 6c 65 73 2f 30 2e 67 69 66 atch_files/0.gif
1e20: 22 20 61 6c 74 3d 22 26 6c 74 3b 67 72 61 70 68 " alt="<graph
1e30: 69 63 26 67 74 3b 22 3e 26 6e 62 73 70 3b 28 61 ic>"> (a
1e40: 26 6e 62 73 70 3b 73 74 69 74 63 68 26 6e 62 73 stitch&nbs
1e50: 70 3b 69 6e 26 6e 62 73 70 3b 74 69 6d 65 26 6e p;in time&n
1e60: 62 73 70 3b 73 61 76 65 73 26 6e 62 73 70 3b 6e bsp;saves n
1e70: 69 6e 65 29 3c 2f 74 74 3e 0a 3c 2f 70 3e 3c 70 ine)</tt>.</p><p
1e80: 3e 45 6c 6c 69 70 73 65 73 20 63 61 6e 20 62 65 >Ellipses can be
1e90: 20 6e 65 73 74 65 64 2c 20 70 72 6f 64 75 63 69 nested, produci
1ea0: 6e 67 20 73 65 71 75 65 6e 63 65 73 20 6f 66 20 ng sequences of
1eb0: 73 65 71 75 65 6e 63 65 73 20 6f 66 20 76 61 6c sequences of val
1ec0: 75 65 73 2e 0a 0a 3c 2f 70 3e 3c 70 3e 0a 0a 3c ues...</p><p>..<
1ed0: 2f 70 3e 3c 70 3e 3c 74 74 3e 28 6d 61 74 63 68 /p><p><tt>(match
1ee0: 26 6e 62 73 70 3b 27 28 28 61 26 6e 62 73 70 3b '((a
1ef0: 62 26 6e 62 73 70 3b 63 26 6e 62 73 70 3b 64 29 b c d)
1f00: 26 6e 62 73 70 3b 28 65 26 6e 62 73 70 3b 66 26 (e f&
1f10: 6e 62 73 70 3b 67 29 26 6e 62 73 70 3b 28 68 26 nbsp;g) (h&
1f20: 6e 62 73 70 3b 69 29 26 6e 62 73 70 3b 28 6a 29 nbsp;i) (j)
1f30: 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 )<br>.. &nb
1f40: 73 70 3b 5b 28 28 2c 78 2a 26 6e 62 73 70 3b 2c sp;[((,x* ,
1f50: 79 2a 2a 26 6e 62 73 70 3b 2e 2e 2e 29 26 6e 62 y** ...)&nb
1f60: 73 70 3b 2e 2e 2e 29 3c 62 72 3e 0a 0a 26 6e 62 sp;...)<br>..&nb
1f70: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 sp; (
1f80: 6c 69 73 74 26 6e 62 73 70 3b 78 2a 26 6e 62 73 list x*&nbs
1f90: 70 3b 79 2a 2a 29 5d 29 26 6e 62 73 70 3b 3c 69 p;y**)]) <i
1fa0: 6d 67 20 73 72 63 3d 22 6d 61 74 63 68 5f 66 69 mg src="match_fi
1fb0: 6c 65 73 2f 30 2e 67 69 66 22 20 61 6c 74 3d 22 les/0.gif" alt="
1fc0: 26 6c 74 3b 67 72 61 70 68 69 63 26 67 74 3b 22 <graphic>"
1fd0: 3e 26 6e 62 73 70 3b 28 28 61 26 6e 62 73 70 3b > ((a
1fe0: 65 26 6e 62 73 70 3b 68 26 6e 62 73 70 3b 6a 29 e h j)
1ff0: 26 6e 62 73 70 3b 28 28 62 26 6e 62 73 70 3b 63 ((b c
2000: 26 6e 62 73 70 3b 64 29 26 6e 62 73 70 3b 28 66 d) (f
2010: 26 6e 62 73 70 3b 67 29 26 6e 62 73 70 3b 28 69 g) (i
2020: 29 26 6e 62 73 70 3b 28 29 29 29 3c 2f 74 74 3e ) ()))</tt>
2030: 0a 3c 2f 70 3e 3c 70 3e 52 65 63 75 72 73 69 6f .</p><p>Recursio
2040: 6e 20 69 73 20 66 72 65 71 75 65 6e 74 6c 79 20 n is frequently
2050: 72 65 71 75 69 72 65 64 20 77 68 69 6c 65 20 70 required while p
2060: 72 6f 63 65 73 73 69 6e 67 20 61 6e 20 69 6e 70 rocessing an inp
2070: 75 74 20 65 78 70 72 65 73 73 69 6f 6e 0a 77 69 ut expression.wi
2080: 74 68 20 3c 74 74 3e 6d 61 74 63 68 3c 2f 74 74 th <tt>match</tt
2090: 3e 2e 0a 48 65 72 65 20 69 73 20 61 20 73 69 6d >..Here is a sim
20a0: 70 6c 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f ple definition o
20b0: 66 20 3c 74 74 3e 6c 65 6e 67 74 68 3c 2f 74 74 f <tt>length</tt
20c0: 3e 20 75 73 69 6e 67 20 3c 74 74 3e 6d 61 74 63 > using <tt>matc
20d0: 68 3c 2f 74 74 3e 2e 0a 0a 3c 2f 70 3e 3c 70 3e h</tt>...</p><p>
20e0: 0a 0a 3c 2f 70 3e 3c 70 3e 3c 74 74 3e 28 64 65 ..</p><p><tt>(de
20f0: 66 69 6e 65 26 6e 62 73 70 3b 6c 65 6e 67 74 68 fine length
2100: 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 <br>.. &nbs
2110: 70 3b 28 6c 61 6d 62 64 61 26 6e 62 73 70 3b 28 p;(lambda (
2120: 6c 73 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 ls)<br>.. &
2130: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
2140: 3b 28 6d 61 74 63 68 26 6e 62 73 70 3b 6c 73 3c ;(match ls<
2150: 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 br>..  
2160: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
2170: 73 70 3b 26 6e 62 73 70 3b 5b 28 29 26 6e 62 73 sp; [()&nbs
2180: 70 3b 30 5d 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b p;0]<br>..
2190: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
21a0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 28 p; [(
21b0: 2c 78 26 6e 62 73 70 3b 2e 26 6e 62 73 70 3b 2c ,x . ,
21c0: 78 2a 29 26 6e 62 73 70 3b 28 61 64 64 31 26 6e x*) (add1&n
21d0: 62 73 70 3b 28 6c 65 6e 67 74 68 26 6e 62 73 70 bsp;(length 
21e0: 3b 78 2a 29 29 5d 29 29 29 3c 2f 74 74 3e 0a 3c ;x*))])))</tt>.<
21f0: 2f 70 3e 3c 70 3e 55 73 69 6e 67 20 65 6c 6c 69 /p><p>Using elli
2200: 70 73 65 73 20 6d 61 79 20 6d 61 6b 65 20 74 68 pses may make th
2210: 69 73 20 6d 6f 72 65 20 63 6c 65 61 72 2e 0a 0a is more clear...
2220: 3c 2f 70 3e 3c 70 3e 0a 0a 3c 2f 70 3e 3c 70 3e </p><p>..</p><p>
2230: 3c 74 74 3e 28 64 65 66 69 6e 65 26 6e 62 73 70 <tt>(define 
2240: 3b 6c 65 6e 67 74 68 3c 62 72 3e 0a 0a 26 6e 62 ;length<br>..&nb
2250: 73 70 3b 26 6e 62 73 70 3b 28 6c 61 6d 62 64 61 sp; (lambda
2260: 26 6e 62 73 70 3b 28 6c 73 29 3c 62 72 3e 0a 0a (ls)<br>..
2270: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
2280: 70 3b 26 6e 62 73 70 3b 28 6d 61 74 63 68 26 6e p; (match&n
2290: 62 73 70 3b 6c 73 3c 62 72 3e 0a 0a 26 6e 62 73 bsp;ls<br>..&nbs
22a0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
22b0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
22c0: 5b 28 29 26 6e 62 73 70 3b 30 5d 3c 62 72 3e 0a [() 0]<br>.
22d0: 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 . &nb
22e0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
22f0: 6e 62 73 70 3b 5b 28 2c 78 26 6e 62 73 70 3b 2c nbsp;[(,x ,
2300: 78 2a 26 6e 62 73 70 3b 2e 2e 2e 29 26 6e 62 73 x* ...)&nbs
2310: 70 3b 28 61 64 64 31 26 6e 62 73 70 3b 28 6c 65 p;(add1 (le
2320: 6e 67 74 68 26 6e 62 73 70 3b 78 2a 29 29 5d 29 ngth x*))])
2330: 29 29 3c 2f 74 74 3e 0a 3c 2f 70 3e 3c 70 3e 48 ))</tt>.</p><p>H
2340: 65 72 65 20 69 73 20 61 20 6d 6f 72 65 20 72 65 ere is a more re
2350: 61 6c 69 73 74 69 63 20 65 78 61 6d 70 6c 65 20 alistic example
2360: 6f 66 20 72 65 63 75 72 73 69 6f 6e 2e 0a 49 74 of recursion..It
2370: 20 61 6c 73 6f 20 69 6c 6c 75 73 74 72 61 74 65 also illustrate
2380: 73 20 74 68 65 20 75 73 65 20 6f 66 20 67 75 61 s the use of gua
2390: 72 64 73 20 61 6e 64 20 74 68 65 20 75 73 65 20 rds and the use
23a0: 6f 66 0a 3c 74 74 3e 65 72 72 6f 72 3c 2f 74 74 of.<tt>error</tt
23b0: 3e 20 74 6f 20 73 69 67 6e 61 6c 20 6d 61 74 63 > to signal matc
23c0: 68 20 65 72 72 6f 72 73 2e 0a 0a 3c 2f 70 3e 3c h errors...</p><
23d0: 70 3e 0a 0a 3c 2f 70 3e 3c 70 3e 3c 74 74 3e 28 p>..</p><p><tt>(
23e0: 64 65 66 69 6e 65 26 6e 62 73 70 3b 73 69 6d 70 define simp
23f0: 6c 65 2d 65 76 61 6c 3c 62 72 3e 0a 0a 26 6e 62 le-eval<br>..&nb
2400: 73 70 3b 26 6e 62 73 70 3b 28 6c 61 6d 62 64 61 sp; (lambda
2410: 26 6e 62 73 70 3b 28 78 29 3c 62 72 3e 0a 0a 26 (x)<br>..&
2420: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
2430: 3b 26 6e 62 73 70 3b 28 6d 61 74 63 68 26 6e 62 ; (match&nb
2440: 73 70 3b 78 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b sp;x<br>..
2450: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
2460: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 2c p; [,
2470: 69 26 6e 62 73 70 3b 28 67 75 61 72 64 26 6e 62 i (guard&nb
2480: 73 70 3b 28 69 6e 74 65 67 65 72 3f 26 6e 62 73 sp;(integer?&nbs
2490: 70 3b 69 29 29 26 6e 62 73 70 3b 69 5d 3c 62 72 p;i)) i]<br
24a0: 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 >.. &
24b0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
24c0: 3b 26 6e 62 73 70 3b 5b 28 2b 26 6e 62 73 70 3b ; [(+
24d0: 2c 78 2a 26 6e 62 73 70 3b 2e 2e 2e 29 26 6e 62 ,x* ...)&nb
24e0: 73 70 3b 28 61 70 70 6c 79 26 6e 62 73 70 3b 2b sp;(apply +
24f0: 26 6e 62 73 70 3b 28 6d 61 70 26 6e 62 73 70 3b (map
2500: 73 69 6d 70 6c 65 2d 65 76 61 6c 26 6e 62 73 70 simple-eval 
2510: 3b 78 2a 29 29 5d 3c 62 72 3e 0a 0a 26 6e 62 73 ;x*))]<br>..&nbs
2520: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
2530: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
2540: 5b 28 2a 26 6e 62 73 70 3b 2c 78 2a 26 6e 62 73 [(* ,x*&nbs
2550: 70 3b 2e 2e 2e 29 26 6e 62 73 70 3b 28 61 70 70 p;...) (app
2560: 6c 79 26 6e 62 73 70 3b 2a 26 6e 62 73 70 3b 28 ly * (
2570: 6d 61 70 26 6e 62 73 70 3b 73 69 6d 70 6c 65 2d map simple-
2580: 65 76 61 6c 26 6e 62 73 70 3b 78 2a 29 29 5d 3c eval x*))]<
2590: 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 br>..  
25a0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
25b0: 73 70 3b 26 6e 62 73 70 3b 5b 28 2d 26 6e 62 73 sp; [(-&nbs
25c0: 70 3b 2c 78 26 6e 62 73 70 3b 2c 79 29 26 6e 62 p;,x ,y)&nb
25d0: 73 70 3b 28 2d 26 6e 62 73 70 3b 28 73 69 6d 70 sp;(- (simp
25e0: 6c 65 2d 65 76 61 6c 26 6e 62 73 70 3b 78 29 26 le-eval x)&
25f0: 6e 62 73 70 3b 28 73 69 6d 70 6c 65 2d 65 76 61 nbsp;(simple-eva
2600: 6c 26 6e 62 73 70 3b 79 29 29 5d 3c 62 72 3e 0a l y))]<br>.
2610: 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 . &nb
2620: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
2630: 6e 62 73 70 3b 5b 28 2f 26 6e 62 73 70 3b 2c 78 nbsp;[(/ ,x
2640: 26 6e 62 73 70 3b 2c 79 29 26 6e 62 73 70 3b 28 ,y) (
2650: 2f 26 6e 62 73 70 3b 28 73 69 6d 70 6c 65 2d 65 / (simple-e
2660: 76 61 6c 26 6e 62 73 70 3b 78 29 26 6e 62 73 70 val x) 
2670: 3b 28 73 69 6d 70 6c 65 2d 65 76 61 6c 26 6e 62 ;(simple-eval&nb
2680: 73 70 3b 79 29 29 5d 3c 62 72 3e 0a 0a 26 6e 62 sp;y))]<br>..&nb
2690: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
26a0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
26b0: 3b 5b 2c 78 26 6e 62 73 70 3b 28 65 72 72 6f 72 ;[,x (error
26c0: 26 6e 62 73 70 3b 27 73 69 6d 70 6c 65 2d 65 76 'simple-ev
26d0: 61 6c 26 6e 62 73 70 3b 22 69 6e 76 61 6c 69 64 al "invalid
26e0: 26 6e 62 73 70 3b 65 78 70 72 65 73 73 69 6f 6e expression
26f0: 26 6e 62 73 70 3b 7e 73 22 26 6e 62 73 70 3b 78 ~s" x
2700: 29 5d 29 29 29 3c 2f 74 74 3e 0a 3c 2f 70 3e 3c )])))</tt>.</p><
2710: 70 3e 54 72 79 20 6f 75 74 20 3c 74 74 3e 73 69 p>Try out <tt>si
2720: 6d 70 6c 65 2d 65 76 61 6c 3c 2f 74 74 3e 20 75 mple-eval</tt> u
2730: 73 69 6e 67 20 43 68 65 7a 20 53 63 68 65 6d 65 sing Chez Scheme
2740: 27 73 20 3c 74 74 3e 6e 65 77 2d 63 61 66 65 3c 's <tt>new-cafe<
2750: 2f 74 74 3e 0a 77 69 74 68 20 3c 74 74 3e 73 69 /tt>.with <tt>si
2760: 6d 70 6c 65 2d 65 76 61 6c 3c 2f 74 74 3e 20 61 mple-eval</tt> a
2770: 73 20 74 68 65 20 65 76 61 6c 75 61 74 69 6f 6e s the evaluation
2780: 20 70 72 6f 63 65 64 75 72 65 3a 0a 0a 3c 2f 70 procedure:..</p
2790: 3e 3c 70 3e 0a 0a 3c 2f 70 3e 3c 70 3e 3c 74 74 ><p>..</p><p><tt
27a0: 3e 26 67 74 3b 26 6e 62 73 70 3b 28 6e 65 77 2d >> (new-
27b0: 63 61 66 65 26 6e 62 73 70 3b 73 69 6d 70 6c 65 cafe simple
27c0: 2d 65 76 61 6c 29 3c 62 72 3e 0a 0a 26 67 74 3b -eval)<br>..>
27d0: 26 67 74 3b 26 6e 62 73 70 3b 28 2b 26 6e 62 73 > (+&nbs
27e0: 70 3b 31 26 6e 62 73 70 3b 32 26 6e 62 73 70 3b p;1 2
27f0: 33 29 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 3) &n
2800: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
2810: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 3c 62 72 3e <br>
2820: 0a 0a 36 3c 62 72 3e 0a 0a 26 67 74 3b 26 67 74 ..6<br>..>>
2830: 3b 26 6e 62 73 70 3b 28 2b 26 6e 62 73 70 3b 28 ; (+ (
2840: 2d 26 6e 62 73 70 3b 30 26 6e 62 73 70 3b 31 29 - 0 1)
2850: 26 6e 62 73 70 3b 28 2b 26 6e 62 73 70 3b 32 26 (+ 2&
2860: 6e 62 73 70 3b 33 29 29 3c 62 72 3e 0a 0a 34 3c nbsp;3))<br>..4<
2870: 62 72 3e 0a 0a 26 67 74 3b 26 67 74 3b 26 6e 62 br>..>>&nb
2880: 73 70 3b 28 2d 26 6e 62 73 70 3b 31 26 6e 62 73 sp;(- 1&nbs
2890: 70 3b 32 26 6e 62 73 70 3b 33 29 0a 3c 62 72 3e p;2 3).<br>
28a0: 0a 3c 62 72 3e 0a 45 72 72 6f 72 26 6e 62 73 70 .<br>.Error 
28b0: 3b 69 6e 26 6e 62 73 70 3b 73 69 6d 70 6c 65 2d ;in simple-
28c0: 65 76 61 6c 3a 26 6e 62 73 70 3b 69 6e 76 61 6c eval: inval
28d0: 69 64 26 6e 62 73 70 3b 65 78 70 72 65 73 73 69 id expressi
28e0: 6f 6e 26 6e 62 73 70 3b 28 2d 26 6e 62 73 70 3b on (-
28f0: 31 26 6e 62 73 70 3b 32 26 6e 62 73 70 3b 33 29 1 2 3)
2900: 2e 3c 62 72 3e 0a 0a 54 79 70 65 26 6e 62 73 70 .<br>..Type 
2910: 3b 28 64 65 62 75 67 29 26 6e 62 73 70 3b 74 6f ;(debug) to
2920: 26 6e 62 73 70 3b 65 6e 74 65 72 26 6e 62 73 70 enter 
2930: 3b 74 68 65 26 6e 62 73 70 3b 64 65 62 75 67 67 ;the debugg
2940: 65 72 2e 3c 62 72 3e 0a 0a 26 67 74 3b 26 67 74 er.<br>..>>
2950: 3b 26 6e 62 73 70 3b 3c 2f 74 74 3e 0a 3c 2f 70 ; </tt>.</p
2960: 3e 3c 70 3e 55 6e 6c 69 6b 65 20 3c 74 74 3e 63 ><p>Unlike <tt>c
2970: 61 73 65 3c 2f 74 74 3e 20 61 6e 64 20 3c 74 74 ase</tt> and <tt
2980: 3e 63 6f 6e 64 3c 2f 74 74 3e 2c 20 3c 74 74 3e >cond</tt>, <tt>
2990: 6d 61 74 63 68 3c 2f 74 74 3e 20 64 6f 65 73 20 match</tt> does
29a0: 6e 6f 74 20 68 61 76 65 0a 61 6e 20 65 78 70 6c not have.an expl
29b0: 69 63 69 74 20 3c 74 74 3e 65 6c 73 65 3c 2f 74 icit <tt>else</t
29c0: 74 3e 20 63 6c 61 75 73 65 2e 0a 49 6e 20 66 61 t> clause..In fa
29d0: 63 74 2c 20 69 66 20 61 20 63 6c 61 75 73 65 20 ct, if a clause
29e0: 6f 66 20 74 68 65 20 66 6f 72 6d 0a 0a 3c 2f 70 of the form..</p
29f0: 3e 3c 70 3e 0a 0a 3c 2f 70 3e 3c 70 3e 3c 74 74 ><p>..</p><p><tt
2a00: 3e 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 65 6c > [el
2a10: 73 65 26 6e 62 73 70 3b 3c 69 3e 65 78 70 72 3c se <i>expr<
2a20: 2f 69 3e 5d 3c 2f 74 74 3e 0a 3c 2f 70 3e 3c 70 /i>]</tt>.</p><p
2a30: 3e 69 73 20 75 73 65 64 2c 20 69 74 20 6d 61 74 >is used, it mat
2a40: 63 68 65 73 20 28 6f 6e 6c 79 29 20 74 68 65 20 ches (only) the
2a50: 73 79 6d 62 6f 6c 20 3c 74 74 3e 65 6c 73 65 3c symbol <tt>else<
2a60: 2f 74 74 3e 2e 0a 54 6f 20 61 63 68 69 65 76 65 /tt>..To achieve
2a70: 20 74 68 65 20 65 66 66 65 63 74 20 6f 66 20 61 the effect of a
2a80: 20 63 61 74 63 68 2d 61 6c 6c 20 63 6c 61 75 73 catch-all claus
2a90: 65 2c 20 3c 74 74 3e 73 69 6d 70 6c 65 2d 65 76 e, <tt>simple-ev
2aa0: 61 6c 3c 2f 74 74 3e 0a 75 73 65 73 20 74 68 65 al</tt>.uses the
2ab0: 20 70 61 74 74 65 72 6e 20 3c 74 74 3e 2c 78 3c pattern <tt>,x<
2ac0: 2f 74 74 3e 20 77 68 69 63 68 20 6d 61 74 63 68 /tt> which match
2ad0: 65 73 20 61 6e 79 20 69 6e 70 75 74 2e 0a 0a 3c es any input...<
2ae0: 2f 70 3e 3c 70 3e 0a 41 6e 20 65 76 65 6e 20 73 /p><p>.An even s
2af0: 69 6d 70 6c 65 72 20 76 65 72 73 69 6f 6e 20 6f impler version o
2b00: 66 20 74 68 65 20 61 62 6f 76 65 20 75 73 65 73 f the above uses
2b10: 20 3c 74 74 3e 6d 61 74 63 68 3c 2f 74 74 3e 27 <tt>match</tt>'
2b20: 73 0a 22 63 61 74 61 6d 6f 72 70 68 69 73 6d 22 s."catamorphism"
2b30: 20 66 65 61 74 75 72 65 20 74 6f 20 70 65 72 66 feature to perf
2b40: 6f 72 6d 20 74 68 65 20 72 65 63 75 72 73 69 6f orm the recursio
2b50: 6e 0a 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e n.automatically.
2b60: 0a 0a 3c 2f 70 3e 3c 70 3e 0a 0a 3c 2f 70 3e 3c ..</p><p>..</p><
2b70: 70 3e 3c 74 74 3e 28 64 65 66 69 6e 65 26 6e 62 p><tt>(define&nb
2b80: 73 70 3b 73 69 6d 70 6c 65 2d 65 76 61 6c 3c 62 sp;simple-eval<b
2b90: 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b r>..
2ba0: 28 6c 61 6d 62 64 61 26 6e 62 73 70 3b 28 78 29 (lambda (x)
2bb0: 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 <br>.. &nbs
2bc0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 6d p; (m
2bd0: 61 74 63 68 26 6e 62 73 70 3b 78 3c 62 72 3e 0a atch x<br>.
2be0: 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 . &nb
2bf0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
2c00: 6e 62 73 70 3b 5b 2c 69 26 6e 62 73 70 3b 28 67 nbsp;[,i (g
2c10: 75 61 72 64 26 6e 62 73 70 3b 28 69 6e 74 65 67 uard (integ
2c20: 65 72 3f 26 6e 62 73 70 3b 69 29 29 26 6e 62 73 er? i))&nbs
2c30: 70 3b 69 5d 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b p;i]<br>..
2c40: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
2c50: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 28 p; [(
2c60: 2b 26 6e 62 73 70 3b 2c 5b 78 2a 5d 26 6e 62 73 + ,[x*]&nbs
2c70: 70 3b 2e 2e 2e 29 26 6e 62 73 70 3b 28 61 70 70 p;...) (app
2c80: 6c 79 26 6e 62 73 70 3b 2b 26 6e 62 73 70 3b 78 ly + x
2c90: 2a 29 5d 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 *)]<br>.. &
2ca0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
2cb0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 28 2a ; [(*
2cc0: 26 6e 62 73 70 3b 2c 5b 78 2a 5d 26 6e 62 73 70 ,[x*] 
2cd0: 3b 2e 2e 2e 29 26 6e 62 73 70 3b 28 61 70 70 6c ;...) (appl
2ce0: 79 26 6e 62 73 70 3b 2a 26 6e 62 73 70 3b 78 2a y * x*
2cf0: 29 5d 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e )]<br>.. &n
2d00: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
2d10: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 28 2d 26 [(-&
2d20: 6e 62 73 70 3b 2c 5b 78 5d 26 6e 62 73 70 3b 2c nbsp;,[x] ,
2d30: 5b 79 5d 29 26 6e 62 73 70 3b 28 2d 26 6e 62 73 [y]) (-&nbs
2d40: 70 3b 78 26 6e 62 73 70 3b 79 29 5d 3c 62 72 3e p;x y)]<br>
2d50: 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e .. &n
2d60: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
2d70: 26 6e 62 73 70 3b 5b 28 2f 26 6e 62 73 70 3b 2c [(/ ,
2d80: 5b 78 5d 26 6e 62 73 70 3b 2c 5b 79 5d 29 26 6e [x] ,[y])&n
2d90: 62 73 70 3b 28 2f 26 6e 62 73 70 3b 78 26 6e 62 bsp;(/ x&nb
2da0: 73 70 3b 79 29 5d 3c 62 72 3e 0a 0a 26 6e 62 73 sp;y)]<br>..&nbs
2db0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
2dc0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
2dd0: 5b 2c 78 26 6e 62 73 70 3b 28 65 72 72 6f 72 26 [,x (error&
2de0: 6e 62 73 70 3b 27 73 69 6d 70 6c 65 2d 65 76 61 nbsp;'simple-eva
2df0: 6c 26 6e 62 73 70 3b 22 69 6e 76 61 6c 69 64 26 l "invalid&
2e00: 6e 62 73 70 3b 65 78 70 72 65 73 73 69 6f 6e 26 nbsp;expression&
2e10: 6e 62 73 70 3b 7e 73 22 26 6e 62 73 70 3b 78 29 nbsp;~s" x)
2e20: 5d 29 29 29 3c 2f 74 74 3e 0a 3c 2f 70 3e 3c 70 ])))</tt>.</p><p
2e30: 3e 49 6e 20 74 68 65 20 73 65 63 6f 6e 64 20 76 >In the second v
2e40: 65 72 73 69 6f 6e 20 6f 66 20 3c 74 74 3e 73 69 ersion of <tt>si
2e50: 6d 70 6c 65 2d 65 76 61 6c 3c 2f 74 74 3e 2c 20 mple-eval</tt>,
2e60: 74 68 65 20 65 78 70 6c 69 63 69 74 0a 72 65 63 the explicit.rec
2e70: 75 72 73 69 76 65 20 63 61 6c 6c 73 20 61 72 65 ursive calls are
2e80: 20 67 6f 6e 65 2e 0a 49 6e 73 74 65 61 64 2c 20 gone..Instead,
2e90: 74 68 65 20 70 61 74 74 65 72 6e 20 76 61 72 69 the pattern vari
2ea0: 61 62 6c 65 73 20 68 61 76 65 20 62 65 65 6e 20 ables have been
2eb0: 77 72 69 74 74 65 6e 20 61 73 0a 3c 74 74 3e 2c written as.<tt>,
2ec0: 5b 3c 69 3e 76 61 72 3c 2f 69 3e 5d 3c 2f 74 74 [<i>var</i>]</tt
2ed0: 3e 3b 20 74 68 69 73 20 74 65 6c 6c 73 20 3c 74 >; this tells <t
2ee0: 74 3e 6d 61 74 63 68 3c 2f 74 74 3e 20 74 6f 20 t>match</tt> to
2ef0: 72 65 63 75 72 20 6f 6e 20 74 68 65 0a 6d 61 74 recur on the.mat
2f00: 63 68 69 6e 67 20 73 75 62 70 61 72 74 20 6f 66 ching subpart of
2f10: 20 74 68 65 20 69 6e 70 75 74 20 62 65 66 6f 72 the input befor
2f20: 65 20 65 76 61 6c 75 61 74 69 6e 67 20 74 68 65 e evaluating the
2f30: 0a 6f 75 74 70 75 74 20 65 78 70 72 65 73 73 69 .output expressi
2f40: 6f 6e 73 20 6f 66 20 74 68 65 20 63 6c 61 75 73 ons of the claus
2f50: 65 2e 0a 50 61 72 65 6e 74 68 65 73 65 73 20 6d e..Parentheses m
2f60: 61 79 20 62 65 20 75 73 65 64 20 69 6e 20 70 6c ay be used in pl
2f70: 61 63 65 20 6f 66 20 62 72 61 63 6b 65 74 73 2c ace of brackets,
2f80: 20 69 2e 65 2e 2c 0a 3c 74 74 3e 2c 28 3c 69 3e i.e.,.<tt>,(<i>
2f90: 76 61 72 3c 2f 69 3e 29 3c 2f 74 74 3e 3b 20 77 var</i>)</tt>; w
2fa0: 65 20 75 73 65 20 62 72 61 63 6b 65 74 73 20 66 e use brackets f
2fb0: 6f 72 20 72 65 61 64 61 62 69 6c 69 74 79 2e 0a or readability..
2fc0: 0a 3c 2f 70 3e 3c 70 3e 0a 48 65 72 65 20 69 73 .</p><p>.Here is
2fd0: 20 61 6e 6f 74 68 65 72 20 64 65 66 69 6e 69 74 another definit
2fe0: 69 6f 6e 20 6f 66 20 3c 74 74 3e 6c 65 6e 67 74 ion of <tt>lengt
2ff0: 68 3c 2f 74 74 3e 2c 20 74 68 69 73 20 74 69 6d h</tt>, this tim
3000: 65 20 75 73 69 6e 67 20 74 68 65 0a 63 61 74 61 e using the.cata
3010: 6d 6f 72 70 68 69 73 6d 20 66 65 61 74 75 72 65 morphism feature
3020: 2e 0a 0a 3c 2f 70 3e 3c 70 3e 0a 0a 3c 2f 70 3e ...</p><p>..</p>
3030: 3c 70 3e 3c 74 74 3e 28 64 65 66 69 6e 65 26 6e <p><tt>(define&n
3040: 62 73 70 3b 6c 65 6e 67 74 68 3c 62 72 3e 0a 0a bsp;length<br>..
3050: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 6c 61 6d (lam
3060: 62 64 61 26 6e 62 73 70 3b 28 78 29 3c 62 72 3e bda (x)<br>
3070: 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e .. &n
3080: 62 73 70 3b 26 6e 62 73 70 3b 28 6d 61 74 63 68 bsp; (match
3090: 26 6e 62 73 70 3b 78 3c 62 72 3e 0a 0a 26 6e 62 x<br>..&nb
30a0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
30b0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
30c0: 3b 5b 28 29 26 6e 62 73 70 3b 30 5d 3c 62 72 3e ;[() 0]<br>
30d0: 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e .. &n
30e0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
30f0: 26 6e 62 73 70 3b 5b 28 2c 78 26 6e 62 73 70 3b [(,x
3100: 2e 26 6e 62 73 70 3b 2c 5b 79 5d 29 26 6e 62 73 . ,[y])&nbs
3110: 70 3b 28 2b 26 6e 62 73 70 3b 79 26 6e 62 73 70 p;(+ y 
3120: 3b 31 29 5d 29 29 29 3c 2f 74 74 3e 0a 3c 2f 70 ;1)])))</tt>.</p
3130: 3e 3c 70 3e 53 69 6e 63 65 20 77 65 20 75 73 75 ><p>Since we usu
3140: 61 6c 6c 79 20 75 73 65 20 3c 74 74 3e 6d 61 74 ally use <tt>mat
3150: 63 68 3c 2f 74 74 3e 20 74 6f 20 77 72 69 74 65 ch</tt> to write
3160: 20 74 72 61 6e 73 6c 61 74 6f 72 73 20 66 72 6f translators fro
3170: 6d 20 6f 6e 65 0a 6c 61 6e 67 75 61 67 65 20 74 m one.language t
3180: 6f 20 61 6e 6f 74 68 65 72 2c 20 77 65 20 75 73 o another, we us
3190: 75 61 6c 6c 79 20 6e 65 65 64 20 74 6f 20 62 75 ually need to bu
31a0: 69 6c 64 20 61 6e 20 6f 75 74 70 75 74 20 65 78 ild an output ex
31b0: 70 72 65 73 73 69 6f 6e 2c 0a 72 61 74 68 65 72 pression,.rather
31c0: 20 74 68 61 6e 20 72 65 74 75 72 6e 20 61 6e 20 than return an
31d0: 6f 75 74 70 75 74 20 76 61 6c 75 65 2e 0a 46 6f output value..Fo
31e0: 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 66 r example, the f
31f0: 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6e 76 65 72 74 ollowing convert
3200: 73 20 3c 74 74 3e 6c 65 74 3c 2f 74 74 3e 20 65 s <tt>let</tt> e
3210: 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 74 6f 0a xpressions into.
3220: 65 71 75 69 76 61 6c 65 6e 74 20 3c 74 74 3e 6c equivalent <tt>l
3230: 61 6d 62 64 61 3c 2f 74 74 3e 20 61 70 70 6c 69 ambda</tt> appli
3240: 63 61 74 69 6f 6e 73 2e 0a 0a 3c 2f 70 3e 3c 70 cations...</p><p
3250: 3e 0a 0a 3c 2f 70 3e 3c 70 3e 3c 74 74 3e 28 64 >..</p><p><tt>(d
3260: 65 66 69 6e 65 26 6e 62 73 70 3b 74 72 61 6e 73 efine trans
3270: 6c 61 74 65 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b late<br>..
3280: 26 6e 62 73 70 3b 28 6c 61 6d 62 64 61 26 6e 62 (lambda&nb
3290: 73 70 3b 28 78 29 3c 62 72 3e 0a 0a 26 6e 62 73 sp;(x)<br>..&nbs
32a0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
32b0: 62 73 70 3b 28 6d 61 74 63 68 26 6e 62 73 70 3b bsp;(match
32c0: 78 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 x<br>.. &nb
32d0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
32e0: 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 28 6c 65 74 nbsp; [(let
32f0: 26 6e 62 73 70 3b 28 28 2c 76 61 72 2a 26 6e 62 ((,var*&nb
3300: 73 70 3b 2c 65 78 70 72 2a 29 26 6e 62 73 70 3b sp;,expr*)
3310: 2e 2e 2e 29 26 6e 62 73 70 3b 2c 62 6f 64 79 26 ...) ,body&
3320: 6e 62 73 70 3b 2c 62 6f 64 79 2a 26 6e 62 73 70 nbsp;,body* 
3330: 3b 2e 2e 2e 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 ;...)<br>.. 
3340: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
3350: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
3360: 6e 62 73 70 3b 60 28 28 6c 61 6d 62 64 61 26 6e nbsp;`((lambda&n
3370: 62 73 70 3b 2c 76 61 72 2a 26 6e 62 73 70 3b 2c bsp;,var* ,
3380: 62 6f 64 79 26 6e 62 73 70 3b 2c 40 62 6f 64 79 body ,@body
3390: 2a 29 26 6e 62 73 70 3b 2c 40 65 78 70 72 2a 29 *) ,@expr*)
33a0: 5d 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 ]<br>.. &nb
33b0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
33c0: 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 2c 78 26 6e nbsp; [,x&n
33d0: 62 73 70 3b 28 65 72 72 6f 72 26 6e 62 73 70 3b bsp;(error
33e0: 27 74 72 61 6e 73 6c 61 74 65 26 6e 62 73 70 3b 'translate
33f0: 22 69 6e 76 61 6c 69 64 26 6e 62 73 70 3b 65 78 "invalid ex
3400: 70 72 65 73 73 69 6f 6e 3a 26 6e 62 73 70 3b 7e pression: ~
3410: 73 22 26 6e 62 73 70 3b 78 29 5d 29 29 29 0a 3c s" x)]))).<
3420: 62 72 3e 0a 3c 62 72 3e 0a 28 74 72 61 6e 73 6c br>.<br>.(transl
3430: 61 74 65 26 6e 62 73 70 3b 27 28 6c 65 74 26 6e ate '(let&n
3440: 62 73 70 3b 28 28 78 26 6e 62 73 70 3b 33 29 26 bsp;((x 3)&
3450: 6e 62 73 70 3b 28 79 26 6e 62 73 70 3b 34 29 29 nbsp;(y 4))
3460: 26 6e 62 73 70 3b 28 2b 26 6e 62 73 70 3b 78 26 (+ x&
3470: 6e 62 73 70 3b 79 29 29 29 26 6e 62 73 70 3b 3c nbsp;y))) <
3480: 69 6d 67 20 73 72 63 3d 22 6d 61 74 63 68 5f 66 img src="match_f
3490: 69 6c 65 73 2f 30 2e 67 69 66 22 20 61 6c 74 3d iles/0.gif" alt=
34a0: 22 26 6c 74 3b 67 72 61 70 68 69 63 26 67 74 3b "<graphic>
34b0: 22 3e 26 6e 62 73 70 3b 28 28 6c 61 6d 62 64 61 "> ((lambda
34c0: 26 6e 62 73 70 3b 28 78 26 6e 62 73 70 3b 79 29 (x y)
34d0: 26 6e 62 73 70 3b 28 2b 26 6e 62 73 70 3b 78 26 (+ x&
34e0: 6e 62 73 70 3b 79 29 29 26 6e 62 73 70 3b 33 26 nbsp;y)) 3&
34f0: 6e 62 73 70 3b 34 29 3c 2f 74 74 3e 0a 3c 2f 70 nbsp;4)</tt>.</p
3500: 3e 3c 70 3e 54 68 69 73 20 70 72 6f 63 65 64 75 ><p>This procedu
3510: 72 65 20 75 73 65 73 20 53 63 68 65 6d 65 27 73 re uses Scheme's
3520: 20 3c 74 74 3e 71 75 61 73 69 71 75 6f 74 65 3c <tt>quasiquote<
3530: 2f 74 74 3e 20 28 62 61 63 6b 71 75 6f 74 65 29 /tt> (backquote)
3540: 2c 0a 3c 74 74 3e 75 6e 71 75 6f 74 65 3c 2f 74 ,.<tt>unquote</t
3550: 74 3e 20 28 63 6f 6d 6d 61 29 2c 20 61 6e 64 20 t> (comma), and
3560: 3c 74 74 3e 75 6e 71 75 6f 74 65 2d 73 70 6c 69 <tt>unquote-spli
3570: 63 69 6e 67 3c 2f 74 74 3e 20 28 63 6f 6d 6d 61 cing</tt> (comma
3580: 2d 61 74 29 0a 74 6f 20 70 69 65 63 65 20 74 6f -at).to piece to
3590: 67 65 74 68 65 72 20 74 68 65 20 6f 75 74 70 75 gether the outpu
35a0: 74 20 66 6f 72 6d 2e 0a 54 68 65 73 65 20 61 72 t form..These ar
35b0: 65 20 6e 6f 74 20 64 65 73 63 72 69 62 65 64 20 e not described
35c0: 68 65 72 65 2c 20 62 75 74 20 61 72 65 20 64 65 here, but are de
35d0: 73 63 72 69 62 65 64 20 69 6e 0a 3c 61 20 63 6c scribed in.<a cl
35e0: 61 73 73 3d 22 72 65 66 22 20 68 72 65 66 3d 22 ass="ref" href="
35f0: 68 74 74 70 3a 2f 2f 77 77 77 2e 73 63 68 65 6d http://www.schem
3600: 65 2e 63 6f 6d 2f 74 73 70 6c 34 2f 6f 62 6a 65 e.com/tspl4/obje
3610: 63 74 73 2e 68 74 6d 6c 23 53 45 43 54 51 55 4f cts.html#SECTQUO
3620: 54 49 4e 47 22 3e 3c 69 3e 54 68 65 0a 53 63 68 TING"><i>The.Sch
3630: 65 6d 65 20 50 72 6f 67 72 61 6d 6d 69 6e 67 20 eme Programming
3640: 4c 61 6e 67 75 61 67 65 3c 2f 69 3e 3c 2f 61 3e Language</i></a>
3650: 2e 0a 0a 3c 2f 70 3e 3c 70 3e 0a 4f 6e 65 20 75 ...</p><p>.One u
3660: 73 65 66 75 6c 20 66 65 61 74 75 72 65 20 6f 66 seful feature of
3670: 20 3c 74 74 3e 71 75 61 73 69 71 75 6f 74 65 3c <tt>quasiquote<
3680: 2f 74 74 3e 20 6e 6f 74 20 64 65 73 63 72 69 62 /tt> not describ
3690: 65 64 20 69 6e 20 74 68 65 73 65 20 64 6f 63 75 ed in these docu
36a0: 6d 65 6e 74 73 0a 69 73 20 61 20 3c 74 74 3e 6d ments.is a <tt>m
36b0: 61 74 63 68 3c 2f 74 74 3e 20 65 78 74 65 6e 73 atch</tt> extens
36c0: 69 6f 6e 20 74 68 61 74 20 61 6c 6c 6f 77 73 20 ion that allows
36d0: 65 6c 6c 69 70 73 65 73 20 74 6f 20 62 65 20 75 ellipses to be u
36e0: 73 65 64 20 69 6e 20 70 6c 61 63 65 0a 6f 66 20 sed in place.of
36f0: 3c 74 74 3e 75 6e 71 75 6f 74 65 2d 73 70 6c 69 <tt>unquote-spli
3700: 63 69 6e 67 3c 2f 74 74 3e 2c 20 77 68 69 63 68 cing</tt>, which
3710: 20 6f 66 74 65 6e 20 6c 65 61 64 73 20 74 6f 20 often leads to
3720: 6d 6f 72 65 20 72 65 61 64 61 62 6c 65 20 63 6f more readable co
3730: 64 65 2e 0a 0a 3c 2f 70 3e 3c 70 3e 0a 0a 3c 2f de...</p><p>..</
3740: 70 3e 3c 70 3e 3c 74 74 3e 28 64 65 66 69 6e 65 p><p><tt>(define
3750: 26 6e 62 73 70 3b 74 72 61 6e 73 6c 61 74 65 3c translate<
3760: 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 br>..  
3770: 3b 28 6c 61 6d 62 64 61 26 6e 62 73 70 3b 28 78 ;(lambda (x
3780: 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 )<br>.. &nb
3790: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 sp; (
37a0: 6d 61 74 63 68 26 6e 62 73 70 3b 78 3c 62 72 3e match x<br>
37b0: 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e .. &n
37c0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
37d0: 26 6e 62 73 70 3b 5b 28 6c 65 74 26 6e 62 73 70 [(let 
37e0: 3b 28 28 2c 76 61 72 2a 26 6e 62 73 70 3b 2c 65 ;((,var* ,e
37f0: 78 70 72 2a 29 26 6e 62 73 70 3b 2e 2e 2e 29 26 xpr*) ...)&
3800: 6e 62 73 70 3b 2c 62 6f 64 79 26 6e 62 73 70 3b nbsp;,body
3810: 2c 62 6f 64 79 2a 26 6e 62 73 70 3b 2e 2e 2e 29 ,body* ...)
3820: 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 <br>.. &nbs
3830: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
3840: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
3850: 60 28 28 6c 61 6d 62 64 61 26 6e 62 73 70 3b 2c `((lambda ,
3860: 76 61 72 2a 26 6e 62 73 70 3b 2c 62 6f 64 79 26 var* ,body&
3870: 6e 62 73 70 3b 2c 62 6f 64 79 2a 26 6e 62 73 70 nbsp;,body* 
3880: 3b 2e 2e 2e 29 26 6e 62 73 70 3b 2c 65 78 70 72 ;...) ,expr
3890: 2a 26 6e 62 73 70 3b 2e 2e 2e 29 5d 3c 62 72 3e * ...)]<br>
38a0: 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e .. &n
38b0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
38c0: 26 6e 62 73 70 3b 5b 2c 78 26 6e 62 73 70 3b 28 [,x (
38d0: 65 72 72 6f 72 26 6e 62 73 70 3b 27 74 72 61 6e error 'tran
38e0: 73 6c 61 74 65 26 6e 62 73 70 3b 22 69 6e 76 61 slate "inva
38f0: 6c 69 64 26 6e 62 73 70 3b 65 78 70 72 65 73 73 lid express
3900: 69 6f 6e 3a 26 6e 62 73 70 3b 7e 73 22 26 6e 62 ion: ~s"&nb
3910: 73 70 3b 78 29 5d 29 29 29 3c 2f 74 74 3e 0a 3c sp;x)])))</tt>.<
3920: 2f 70 3e 3c 70 3e 57 69 74 68 69 6e 20 65 61 63 /p><p>Within eac
3930: 68 20 73 75 62 66 6f 72 6d 20 66 6f 6c 6c 6f 77 h subform follow
3940: 65 64 20 62 79 20 61 6e 20 65 6c 6c 69 70 73 69 ed by an ellipsi
3950: 73 2c 20 65 61 63 68 0a 63 6f 6d 6d 61 2d 70 72 s, each.comma-pr
3960: 65 66 69 78 65 64 20 69 74 65 6d 20 6d 75 73 74 efixed item must
3970: 20 62 65 20 61 20 6c 69 73 74 20 61 6e 64 20 61 be a list and a
3980: 6c 6c 20 73 75 63 68 20 69 74 65 6d 73 20 77 69 ll such items wi
3990: 74 68 69 6e 20 74 68 65 20 73 61 6d 65 0a 73 75 thin the same.su
39a0: 62 66 6f 72 6d 20 6d 75 73 74 20 68 61 76 65 20 bform must have
39b0: 74 68 65 20 73 61 6d 65 20 6c 65 6e 67 74 68 2e the same length.
39c0: 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 .The following p
39d0: 72 6f 63 65 64 75 72 65 20 65 78 74 72 61 63 74 rocedure extract
39e0: 73 20 74 77 6f 20 6c 69 73 74 73 20 66 72 6f 6d s two lists from
39f0: 20 69 74 73 20 69 6e 70 75 74 20 61 6e 64 20 6d its input and m
3a00: 65 72 67 65 73 0a 74 68 65 6d 20 74 6f 20 66 6f erges.them to fo
3a10: 72 6d 20 61 20 6c 69 73 74 20 6f 66 20 70 61 69 rm a list of pai
3a20: 72 73 2e 0a 0a 3c 2f 70 3e 3c 70 3e 0a 0a 3c 2f rs...</p><p>..</
3a30: 70 3e 3c 70 3e 3c 74 74 3e 28 64 65 66 69 6e 65 p><p><tt>(define
3a40: 26 6e 62 73 70 3b 28 66 26 6e 62 73 70 3b 78 29 (f x)
3a50: 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 <br>.. &nbs
3a60: 70 3b 28 6d 61 74 63 68 26 6e 62 73 70 3b 78 3c p;(match x<
3a70: 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 br>..  
3a80: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 28 28 ; [((
3a90: 2c 61 26 6e 62 73 70 3b 2e 2e 2e 29 26 6e 62 73 ,a ...)&nbs
3aa0: 70 3b 28 2c 62 26 6e 62 73 70 3b 2e 2e 2e 29 29 p;(,b ...))
3ab0: 26 6e 62 73 70 3b 60 28 28 2c 61 26 6e 62 73 70 `((,a 
3ac0: 3b 2e 26 6e 62 73 70 3b 2c 62 29 26 6e 62 73 70 ;. ,b) 
3ad0: 3b 2e 2e 2e 29 5d 29 29 3c 62 72 3e 0a 0a 28 66 ;...)]))<br>..(f
3ae0: 26 6e 62 73 70 3b 27 28 28 31 26 6e 62 73 70 3b '((1
3af0: 32 26 6e 62 73 70 3b 33 29 26 6e 62 73 70 3b 28 2 3) (
3b00: 61 26 6e 62 73 70 3b 62 26 6e 62 73 70 3b 63 29 a b c)
3b10: 29 29 26 6e 62 73 70 3b 3c 69 6d 67 20 73 72 63 )) <img src
3b20: 3d 22 6d 61 74 63 68 5f 66 69 6c 65 73 2f 30 2e ="match_files/0.
3b30: 67 69 66 22 20 61 6c 74 3d 22 26 6c 74 3b 67 72 gif" alt="<gr
3b40: 61 70 68 69 63 26 67 74 3b 22 3e 26 6e 62 73 70 aphic>"> 
3b50: 3b 28 28 31 26 6e 62 73 70 3b 2e 26 6e 62 73 70 ;((1 . 
3b60: 3b 61 29 26 6e 62 73 70 3b 28 32 26 6e 62 73 70 ;a) (2 
3b70: 3b 2e 26 6e 62 73 70 3b 62 29 26 6e 62 73 70 3b ;. b)
3b80: 28 33 26 6e 62 73 70 3b 2e 26 6e 62 73 70 3b 63 (3 . c
3b90: 29 29 3c 2f 74 74 3e 0a 3c 2f 70 3e 3c 70 3e 49 ))</tt>.</p><p>I
3ba0: 74 20 66 61 69 6c 73 20 69 66 20 74 68 65 20 74 t fails if the t
3bb0: 77 6f 20 6c 69 73 74 73 20 68 61 76 65 20 64 69 wo lists have di
3bc0: 66 66 65 72 65 6e 74 20 6c 65 6e 67 74 68 73 2e fferent lengths.
3bd0: 0a 0a 3c 2f 70 3e 3c 70 3e 0a 0a 3c 2f 70 3e 3c ..</p><p>..</p><
3be0: 70 3e 3c 74 74 3e 28 66 26 6e 62 73 70 3b 27 28 p><tt>(f '(
3bf0: 28 31 26 6e 62 73 70 3b 32 26 6e 62 73 70 3b 33 (1 2 3
3c00: 29 26 6e 62 73 70 3b 28 61 26 6e 62 73 70 3b 62 ) (a b
3c10: 29 29 29 26 6e 62 73 70 3b 3c 69 6d 67 20 73 72 ))) <img sr
3c20: 63 3d 22 6d 61 74 63 68 5f 66 69 6c 65 73 2f 30 c="match_files/0
3c30: 2e 67 69 66 22 20 61 6c 74 3d 22 26 6c 74 3b 67 .gif" alt="<g
3c40: 72 61 70 68 69 63 26 67 74 3b 22 3e 26 6e 62 73 raphic>">&nbs
3c50: 70 3b 3c 69 3e 65 72 72 6f 72 3c 2f 69 3e 3c 2f p;<i>error</i></
3c60: 74 74 3e 0a 3c 2f 70 3e 3c 70 3e 54 68 65 20 66 tt>.</p><p>The f
3c70: 6f 6c 6c 6f 77 69 6e 67 20 61 6c 73 6f 20 66 61 ollowing also fa
3c80: 69 6c 73 20 62 65 63 61 75 73 65 20 6f 6e 65 20 ils because one
3c90: 6f 66 20 74 68 65 20 69 74 65 6d 73 20 69 73 20 of the items is
3ca0: 6e 6f 74 20 65 76 65 6e 20 61 20 6c 69 73 74 2e not even a list.
3cb0: 0a 0a 3c 2f 70 3e 3c 70 3e 0a 0a 3c 2f 70 3e 3c ..</p><p>..</p><
3cc0: 70 3e 3c 74 74 3e 28 64 65 66 69 6e 65 26 6e 62 p><tt>(define&nb
3cd0: 73 70 3b 28 66 26 6e 62 73 70 3b 78 29 3c 62 72 sp;(f x)<br
3ce0: 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 >.. (
3cf0: 6d 61 74 63 68 26 6e 62 73 70 3b 78 3c 62 72 3e match x<br>
3d00: 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e .. &n
3d10: 62 73 70 3b 26 6e 62 73 70 3b 5b 28 2c 61 26 6e bsp; [(,a&n
3d20: 62 73 70 3b 2c 62 26 6e 62 73 70 3b 2e 2e 2e 29 bsp;,b ...)
3d30: 26 6e 62 73 70 3b 60 28 28 2c 61 26 6e 62 73 70 `((,a 
3d40: 3b 2c 62 29 26 6e 62 73 70 3b 2e 2e 2e 29 5d 29 ;,b) ...)])
3d50: 29 3c 62 72 3e 0a 0a 28 66 26 6e 62 73 70 3b 27 )<br>..(f '
3d60: 28 31 26 6e 62 73 70 3b 32 26 6e 62 73 70 3b 33 (1 2 3
3d70: 26 6e 62 73 70 3b 34 29 29 26 6e 62 73 70 3b 3c 4)) <
3d80: 69 6d 67 20 73 72 63 3d 22 6d 61 74 63 68 5f 66 img src="match_f
3d90: 69 6c 65 73 2f 30 2e 67 69 66 22 20 61 6c 74 3d iles/0.gif" alt=
3da0: 22 26 6c 74 3b 67 72 61 70 68 69 63 26 67 74 3b "<graphic>
3db0: 22 3e 26 6e 62 73 70 3b 3c 69 3e 65 72 72 6f 72 "> <i>error
3dc0: 3c 2f 69 3e 3c 2f 74 74 3e 0a 3c 2f 70 3e 3c 70 </i></tt>.</p><p
3dd0: 3e 41 20 73 75 62 66 6f 72 6d 20 66 6f 6c 6c 6f >A subform follo
3de0: 77 65 64 20 62 79 20 61 6e 20 65 6c 6c 69 70 73 wed by an ellips
3df0: 65 73 20 6d 61 79 20 62 65 20 63 6f 6e 74 61 69 es may be contai
3e00: 6e 65 64 20 77 69 74 68 20 61 20 6c 61 72 67 65 ned with a large
3e10: 72 20 73 75 62 66 6f 72 6d 0a 74 68 61 74 20 69 r subform.that i
3e20: 73 20 61 6c 73 6f 20 66 6f 6c 6c 6f 77 65 64 20 s also followed
3e30: 62 79 20 61 6e 20 65 6c 6c 69 70 73 69 73 2e 0a by an ellipsis..
3e40: 49 6e 20 74 68 69 73 20 63 61 73 65 2c 20 65 61 In this case, ea
3e50: 63 68 20 63 6f 6d 6d 61 2d 70 72 65 66 69 78 65 ch comma-prefixe
3e60: 64 20 69 74 65 6d 20 6d 75 73 74 20 62 65 20 61 d item must be a
3e70: 20 6c 69 73 74 20 6f 66 20 6c 69 73 74 73 2c 20 list of lists,
3e80: 65 61 63 68 20 73 75 63 68 0a 69 74 65 6d 20 6d each such.item m
3e90: 75 73 74 20 68 61 76 65 20 74 68 65 20 73 61 6d ust have the sam
3ea0: 65 20 6c 65 6e 67 74 68 2c 20 61 6e 64 20 74 68 e length, and th
3eb0: 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 e corresponding
3ec0: 73 75 62 6c 69 73 74 73 20 6f 66 20 65 61 63 68 sublists of each
3ed0: 0a 73 75 63 68 20 69 74 65 6d 20 6d 75 73 74 20 .such item must
3ee0: 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 6c 65 have the same le
3ef0: 6e 67 74 68 73 2e 0a 54 68 69 73 20 72 65 71 75 ngths..This requ
3f00: 69 72 65 6d 65 6e 74 20 67 65 6e 65 72 61 6c 69 irement generali
3f10: 7a 65 73 20 74 6f 20 63 6f 6d 6d 61 2d 70 72 65 zes to comma-pre
3f20: 66 69 78 65 64 20 69 74 65 6d 73 20 6e 65 73 74 fixed items nest
3f30: 65 64 20 77 69 74 68 69 6e 0a 6d 6f 72 65 20 74 ed within.more t
3f40: 68 61 6e 20 74 77 6f 20 6c 65 76 65 6c 73 20 6f han two levels o
3f50: 66 20 65 6c 6c 69 73 70 69 73 2d 66 6f 6c 6c 6f f ellispis-follo
3f60: 77 65 64 20 73 75 62 66 6f 72 6d 73 2e 0a 0a 3c wed subforms...<
3f70: 2f 70 3e 3c 70 3e 0a 54 68 65 20 66 6f 6c 6c 6f /p><p>.The follo
3f80: 77 69 6e 67 20 70 72 6f 63 65 64 75 72 65 20 69 wing procedure i
3f90: 6c 6c 75 73 74 72 61 74 65 73 20 74 77 6f 20 6c llustrates two l
3fa0: 65 76 65 6c 73 20 6f 66 20 6e 65 73 74 65 64 20 evels of nested
3fb0: 65 6c 6c 69 70 73 65 73 20 69 6e 20 62 6f 74 68 ellipses in both
3fc0: 0a 74 68 65 20 69 6e 70 75 74 20 61 6e 64 20 6f .the input and o
3fd0: 75 74 70 75 74 2e 0a 49 74 20 63 6f 6e 76 65 72 utput..It conver
3fe0: 74 73 20 75 6e 6e 61 6d 65 64 20 3c 74 74 3e 6c ts unnamed <tt>l
3ff0: 65 74 3c 2f 74 74 3e 20 65 78 70 72 65 73 73 69 et</tt> expressi
4000: 6f 6e 73 20 69 6e 74 6f 0a 64 69 72 65 63 74 20 ons into.direct
4010: 3c 74 74 3e 6c 61 6d 62 64 61 3c 2f 74 74 3e 20 <tt>lambda</tt>
4020: 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c 20 77 68 applications, wh
4030: 65 72 65 20 74 68 65 20 3c 74 74 3e 6c 65 74 3c ere the <tt>let<
4040: 2f 74 74 3e 20 68 61 73 20 62 65 65 6e 0a 67 65 /tt> has been.ge
4050: 6e 65 72 61 6c 69 7a 65 64 20 74 6f 20 61 6c 6c neralized to all
4060: 6f 77 20 61 6e 20 69 6d 70 6c 69 63 69 74 20 3c ow an implicit <
4070: 74 74 3e 62 65 67 69 6e 3c 2f 74 74 3e 20 69 6e tt>begin</tt> in
4080: 20 65 61 63 68 20 72 69 67 68 74 2d 68 61 6e 64 each right-hand
4090: 2d 73 69 64 65 0a 65 78 70 72 65 73 73 69 6f 6e -side.expression
40a0: 2e 0a 0a 3c 2f 70 3e 3c 70 3e 0a 0a 3c 2f 70 3e ...</p><p>..</p>
40b0: 3c 70 3e 3c 74 74 3e 28 64 65 66 69 6e 65 26 6e <p><tt>(define&n
40c0: 62 73 70 3b 28 66 26 6e 62 73 70 3b 78 29 3c 62 bsp;(f x)<b
40d0: 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b r>..
40e0: 28 6d 61 74 63 68 26 6e 62 73 70 3b 78 3c 62 72 (match x<br
40f0: 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 >.. &
4100: 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 28 6c 65 74 nbsp; [(let
4110: 26 6e 62 73 70 3b 28 5b 2c 78 26 6e 62 73 70 3b ([,x
4120: 2c 65 31 26 6e 62 73 70 3b 2e 2e 2e 5d 26 6e 62 ,e1 ...]&nb
4130: 73 70 3b 2e 2e 2e 29 26 6e 62 73 70 3b 2c 62 31 sp;...) ,b1
4140: 26 6e 62 73 70 3b 2c 62 32 26 6e 62 73 70 3b 2e ,b2 .
4150: 2e 2e 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 ..)<br>.. &
4160: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
4170: 3b 26 6e 62 73 70 3b 60 28 28 6c 61 6d 62 64 61 ; `((lambda
4180: 26 6e 62 73 70 3b 28 2c 78 26 6e 62 73 70 3b 2e (,x .
4190: 2e 2e 29 26 6e 62 73 70 3b 2c 62 31 26 6e 62 73 ..) ,b1&nbs
41a0: 70 3b 2c 62 32 26 6e 62 73 70 3b 2e 2e 2e 29 3c p;,b2 ...)<
41b0: 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 br>..  
41c0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
41d0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 sp; (
41e0: 62 65 67 69 6e 26 6e 62 73 70 3b 2c 65 31 26 6e begin ,e1&n
41f0: 62 73 70 3b 2e 2e 2e 29 26 6e 62 73 70 3b 2e 2e bsp;...) ..
4200: 2e 29 5d 29 29 3c 62 72 3e 0a 0a 28 66 26 6e 62 .)]))<br>..(f&nb
4210: 73 70 3b 27 28 6c 65 74 26 6e 62 73 70 3b 28 28 sp;'(let ((
4220: 78 26 6e 62 73 70 3b 28 77 72 69 74 65 26 6e 62 x (write&nb
4230: 73 70 3b 27 6f 6e 65 29 26 6e 62 73 70 3b 33 29 sp;'one) 3)
4240: 26 6e 62 73 70 3b 28 79 26 6e 62 73 70 3b 28 77 (y (w
4250: 72 69 74 65 26 6e 62 73 70 3b 27 74 77 6f 29 26 rite 'two)&
4260: 6e 62 73 70 3b 34 29 29 26 6e 62 73 70 3b 28 6c nbsp;4)) (l
4270: 69 73 74 26 6e 62 73 70 3b 78 26 6e 62 73 70 3b ist x
4280: 79 29 29 29 26 6e 62 73 70 3b 3c 69 6d 67 20 73 y))) <img s
4290: 72 63 3d 22 6d 61 74 63 68 5f 66 69 6c 65 73 2f rc="match_files/
42a0: 30 2e 67 69 66 22 20 61 6c 74 3d 22 26 6c 74 3b 0.gif" alt="<
42b0: 67 72 61 70 68 69 63 26 67 74 3b 22 3e 3c 62 72 graphic>"><br
42c0: 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 >.. (
42d0: 28 6c 61 6d 62 64 61 26 6e 62 73 70 3b 28 78 26 (lambda (x&
42e0: 6e 62 73 70 3b 79 29 26 6e 62 73 70 3b 28 6c 69 nbsp;y) (li
42f0: 73 74 26 6e 62 73 70 3b 78 26 6e 62 73 70 3b 79 st x y
4300: 29 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e ))<br>.. &n
4310: 62 73 70 3b 26 6e 62 73 70 3b 28 62 65 67 69 6e bsp; (begin
4320: 26 6e 62 73 70 3b 28 77 72 69 74 65 26 6e 62 73 (write&nbs
4330: 70 3b 27 6f 6e 65 29 26 6e 62 73 70 3b 33 29 3c p;'one) 3)<
4340: 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 br>..  
4350: 3b 26 6e 62 73 70 3b 28 62 65 67 69 6e 26 6e 62 ; (begin&nb
4360: 73 70 3b 28 77 72 69 74 65 26 6e 62 73 70 3b 27 sp;(write '
4370: 74 77 6f 29 26 6e 62 73 70 3b 34 29 29 3c 2f 74 two) 4))</t
4380: 74 3e 0a 3c 2f 70 3e 3c 70 3e 49 6e 20 74 68 65 t>.</p><p>In the
4390: 20 6f 75 74 70 75 74 2c 20 61 20 73 75 62 66 6f output, a subfo
43a0: 72 6d 20 6d 61 79 20 62 65 20 66 6f 6c 6c 6f 77 rm may be follow
43b0: 65 64 20 64 69 72 65 63 74 6c 79 20 62 79 20 74 ed directly by t
43c0: 77 6f 20 6f 72 20 6d 6f 72 65 0a 65 6c 6c 69 70 wo or more.ellip
43d0: 73 65 73 3b 20 74 68 65 20 72 65 71 75 69 72 65 ses; the require
43e0: 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 73 61 ments are the sa
43f0: 6d 65 20 61 73 20 66 6f 72 20 6e 65 73 74 65 64 me as for nested
4400: 20 65 6c 6c 69 70 73 65 73 2c 20 62 75 74 0a 74 ellipses, but.t
4410: 68 65 20 72 65 73 75 6c 74 20 69 73 20 66 6c 61 he result is fla
4420: 74 74 65 6e 65 64 20 72 61 74 68 65 72 20 74 68 ttened rather th
4430: 61 6e 20 6e 65 73 74 65 64 2c 20 61 73 20 69 6c an nested, as il
4440: 6c 75 73 74 72 61 74 65 64 20 62 79 20 74 68 65 lustrated by the
4450: 0a 66 6f 6c 6c 6f 77 69 6e 67 20 65 78 61 6d 70 .following examp
4460: 6c 65 2e 0a 0a 3c 2f 70 3e 3c 70 3e 0a 0a 3c 2f le...</p><p>..</
4470: 70 3e 3c 70 3e 3c 74 74 3e 28 64 65 66 69 6e 65 p><p><tt>(define
4480: 26 6e 62 73 70 3b 28 66 26 6e 62 73 70 3b 78 29 (f x)
4490: 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 <br>.. &nbs
44a0: 70 3b 28 6d 61 74 63 68 26 6e 62 73 70 3b 78 3c p;(match x<
44b0: 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 br>..  
44c0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 28 66 ; [(f
44d0: 6f 6f 26 6e 62 73 70 3b 28 2c 78 26 6e 62 73 70 oo (,x 
44e0: 3b 2e 2e 2e 29 26 6e 62 73 70 3b 2e 2e 2e 29 3c ;...) ...)<
44f0: 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 br>..  
4500: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
4510: 73 70 3b 60 28 6c 69 73 74 26 6e 62 73 70 3b 28 sp;`(list (
4520: 63 61 72 26 6e 62 73 70 3b 2c 78 29 26 6e 62 73 car ,x)&nbs
4530: 70 3b 2e 2e 2e 26 6e 62 73 70 3b 2e 2e 2e 29 5d p;... ...)]
4540: 29 29 3c 62 72 3e 0a 0a 28 66 26 6e 62 73 70 3b ))<br>..(f
4550: 27 28 66 6f 6f 26 6e 62 73 70 3b 28 61 29 26 6e '(foo (a)&n
4560: 62 73 70 3b 28 62 26 6e 62 73 70 3b 63 26 6e 62 bsp;(b c&nb
4570: 73 70 3b 64 26 6e 62 73 70 3b 65 29 26 6e 62 73 sp;d e)&nbs
4580: 70 3b 28 29 26 6e 62 73 70 3b 28 66 26 6e 62 73 p;() (f&nbs
4590: 70 3b 67 29 29 29 26 6e 62 73 70 3b 3c 69 6d 67 p;g))) <img
45a0: 20 73 72 63 3d 22 6d 61 74 63 68 5f 66 69 6c 65 src="match_file
45b0: 73 2f 30 2e 67 69 66 22 20 61 6c 74 3d 22 26 6c s/0.gif" alt="&l
45c0: 74 3b 67 72 61 70 68 69 63 26 67 74 3b 22 3e 3c t;graphic>"><
45d0: 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 br>..  
45e0: 3b 28 6c 69 73 74 26 6e 62 73 70 3b 28 63 61 72 ;(list (car
45f0: 26 6e 62 73 70 3b 61 29 26 6e 62 73 70 3b 28 63 a) (c
4600: 61 72 26 6e 62 73 70 3b 62 29 26 6e 62 73 70 3b ar b)
4610: 28 63 61 72 26 6e 62 73 70 3b 63 29 26 6e 62 73 (car c)&nbs
4620: 70 3b 28 63 61 72 26 6e 62 73 70 3b 64 29 26 6e p;(car d)&n
4630: 62 73 70 3b 28 63 61 72 26 6e 62 73 70 3b 65 29 bsp;(car e)
4640: 26 6e 62 73 70 3b 28 63 61 72 26 6e 62 73 70 3b (car
4650: 66 29 26 6e 62 73 70 3b 28 63 61 72 26 6e 62 73 f) (car&nbs
4660: 70 3b 67 29 29 3c 2f 74 74 3e 0a 3c 2f 70 3e 3c p;g))</tt>.</p><
4670: 70 3e 53 6f 6d 65 74 69 6d 65 73 20 69 74 20 69 p>Sometimes it i
4680: 73 20 75 73 65 66 75 6c 20 74 6f 20 65 78 70 6c s useful to expl
4690: 69 63 69 74 6c 79 20 6e 61 6d 65 20 74 68 65 20 icitly name the
46a0: 6f 70 65 72 61 74 6f 72 20 69 6e 20 61 0a 22 63 operator in a."c
46b0: 61 74 61 22 20 73 75 62 70 61 74 74 65 72 6e 2e ata" subpattern.
46c0: 0a 57 68 65 72 65 61 73 20 3c 74 74 3e 2c 5b 3c .Whereas <tt>,[<
46d0: 69 3e 69 64 3c 2f 69 3e 26 6e 62 73 70 3b 2e 2e i>id</i> ..
46e0: 2e 5d 3c 2f 74 74 3e 20 72 65 63 75 72 73 20 74 .]</tt> recurs t
46f0: 6f 20 74 68 65 20 74 6f 70 20 6f 66 20 74 68 65 o the top of the
4700: 20 63 75 72 72 65 6e 74 0a 3c 74 74 3e 6d 61 74 current.<tt>mat
4710: 63 68 3c 2f 74 74 3e 2c 20 3c 74 74 3e 2c 5b 3c ch</tt>, <tt>,[<
4720: 69 3e 63 61 74 61 3c 2f 69 3e 26 6e 62 73 70 3b i>cata</i>
4730: 2d 26 67 74 3b 26 6e 62 73 70 3b 3c 69 3e 69 64 -> <i>id
4740: 3c 2f 69 3e 26 6e 62 73 70 3b 2e 2e 2e 5d 3c 2f </i> ...]</
4750: 74 74 3e 20 72 65 63 75 72 73 0a 74 6f 20 3c 74 tt> recurs.to <t
4760: 74 3e 3c 69 3e 63 61 74 61 3c 2f 69 3e 3c 2f 74 t><i>cata</i></t
4770: 74 3e 2e 0a 3c 74 74 3e 3c 69 3e 63 61 74 61 3c t>..<tt><i>cata<
4780: 2f 69 3e 3c 2f 74 74 3e 20 6d 75 73 74 20 65 76 /i></tt> must ev
4790: 61 6c 75 61 74 65 20 74 6f 20 61 20 70 72 6f 63 aluate to a proc
47a0: 65 64 75 72 65 20 74 68 61 74 20 61 63 63 65 70 edure that accep
47b0: 74 73 0a 6f 6e 65 20 61 72 67 75 6d 65 6e 74 2c ts.one argument,
47c0: 20 74 68 65 20 69 6e 70 75 74 20 65 78 70 72 65 the input expre
47d0: 73 73 69 6f 6e 2c 20 61 6e 64 20 72 65 74 75 72 ssion, and retur
47e0: 6e 73 20 61 73 20 6d 61 6e 79 20 76 61 6c 75 65 ns as many value
47f0: 73 0a 61 73 20 74 68 65 72 65 20 61 72 65 20 69 s.as there are i
4800: 64 65 6e 74 69 66 69 65 72 73 20 66 6f 6c 6c 6f dentifiers follo
4810: 77 69 6e 67 20 74 68 65 20 3c 74 74 3e 2d 26 67 wing the <tt>-&g
4820: 74 3b 3c 2f 74 74 3e 2e 0a 0a 3c 2f 70 3e 3c 70 t;</tt>...</p><p
4830: 3e 0a 54 68 69 73 20 61 6c 6c 6f 77 73 20 70 72 >.This allows pr
4840: 6f 63 65 73 73 69 6e 67 20 74 6f 20 62 65 20 73 ocessing to be s
4850: 70 6c 69 74 20 69 6e 74 6f 20 73 65 76 65 72 61 plit into severa
4860: 6c 0a 6d 75 74 75 61 6c 6c 79 20 72 65 63 75 72 l.mutually recur
4870: 73 69 76 65 20 70 72 6f 63 65 64 75 72 65 73 2c sive procedures,
4880: 20 61 73 20 69 6e 20 74 68 65 20 66 6f 6c 6c 6f as in the follo
4890: 77 69 6e 67 20 70 61 72 73 65 72 20 66 6f 72 20 wing parser for
48a0: 74 68 65 20 73 69 6d 70 6c 65 0a 6c 61 6e 67 75 the simple.langu
48b0: 61 67 65 20 64 65 66 69 6e 65 64 20 62 79 20 74 age defined by t
48c0: 68 65 20 67 72 61 6d 6d 61 72 20 62 65 6c 6f 77 he grammar below
48d0: 2e 0a 0a 3c 2f 70 3e 3c 70 3e 0a 0a 20 20 0a 20 ...</p><p>.. .
48e0: 20 0a 20 20 0a 20 20 3c 2f 70 3e 3c 74 61 62 6c . . </p><tabl
48f0: 65 3e 3c 74 62 6f 64 79 3e 3c 74 72 3e 3c 74 64 e><tbody><tr><td
4900: 20 6e 6f 77 72 61 70 3d 22 6e 6f 77 72 61 70 22 nowrap="nowrap"
4910: 3e 0a 26 6c 74 3b 50 72 6f 67 26 67 74 3b 3c 2f >.<Prog></
4920: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 td><td align="ce
4930: 6e 74 65 72 22 3e 3c 69 6d 67 20 73 72 63 3d 22 nter"><img src="
4940: 6d 61 74 63 68 5f 66 69 6c 65 73 2f 31 2e 67 69 match_files/1.gi
4950: 66 22 20 61 6c 74 3d 22 26 6c 74 3b 67 72 61 70 f" alt="<grap
4960: 68 69 63 26 67 74 3b 22 3e 3c 2f 74 64 3e 3c 74 hic>"></td><t
4970: 64 20 6e 6f 77 72 61 70 3d 22 6e 6f 77 72 61 70 d nowrap="nowrap
4980: 22 3e 3c 74 74 3e 28 70 72 6f 67 72 61 6d 3c 2f "><tt>(program</
4990: 74 74 3e 20 26 6c 74 3b 53 74 6d 74 26 67 74 3b tt> <Stmt>
49a0: 2a 20 26 6c 74 3b 45 78 70 72 26 67 74 3b 3c 74 * <Expr><t
49b0: 74 3e 29 3c 2f 74 74 3e 3c 2f 74 64 3e 3c 2f 74 t>)</tt></td></t
49c0: 72 3e 3c 74 72 3e 3c 74 64 20 6e 6f 77 72 61 70 r><tr><td nowrap
49d0: 3d 22 6e 6f 77 72 61 70 22 3e 0a 26 6c 74 3b 53 ="nowrap">.<S
49e0: 74 6d 74 26 67 74 3b 3c 2f 74 64 3e 3c 74 64 20 tmt></td><td
49f0: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c align="center"><
4a00: 69 6d 67 20 73 72 63 3d 22 6d 61 74 63 68 5f 66 img src="match_f
4a10: 69 6c 65 73 2f 31 2e 67 69 66 22 20 61 6c 74 3d iles/1.gif" alt=
4a20: 22 26 6c 74 3b 67 72 61 70 68 69 63 26 67 74 3b "<graphic>
4a30: 22 3e 3c 2f 74 64 3e 3c 74 64 20 6e 6f 77 72 61 "></td><td nowra
4a40: 70 3d 22 6e 6f 77 72 61 70 22 3e 3c 74 74 3e 28 p="nowrap"><tt>(
4a50: 69 66 3c 2f 74 74 3e 20 26 6c 74 3b 45 78 70 72 if</tt> <Expr
4a60: 26 67 74 3b 20 26 6c 74 3b 53 74 6d 74 26 67 74 > <Stmt>
4a70: 3b 20 26 6c 74 3b 53 74 6d 74 26 67 74 3b 3c 74 ; <Stmt><t
4a80: 74 3e 29 3c 2f 74 74 3e 3c 2f 74 64 3e 3c 2f 74 t>)</tt></td></t
4a90: 72 3e 3c 74 72 3e 3c 74 64 20 6e 6f 77 72 61 70 r><tr><td nowrap
4aa0: 3d 22 6e 6f 77 72 61 70 22 3e 0a 20 20 20 20 20 ="nowrap">.
4ab0: 20 20 20 20 20 3c 2f 74 64 3e 3c 74 64 20 61 6c </td><td al
4ac0: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 7c 3c 2f ign="center">|</
4ad0: 74 64 3e 3c 74 64 20 6e 6f 77 72 61 70 3d 22 6e td><td nowrap="n
4ae0: 6f 77 72 61 70 22 3e 3c 74 74 3e 28 73 65 74 21 owrap"><tt>(set!
4af0: 3c 2f 74 74 3e 20 26 6c 74 3b 76 61 72 26 67 74 </tt> <var>
4b00: 3b 20 26 6c 74 3b 45 78 70 72 26 67 74 3b 3c 74 ; <Expr><t
4b10: 74 3e 29 3c 2f 74 74 3e 3c 2f 74 64 3e 3c 2f 74 t>)</tt></td></t
4b20: 72 3e 3c 74 72 3e 3c 74 64 20 6e 6f 77 72 61 70 r><tr><td nowrap
4b30: 3d 22 6e 6f 77 72 61 70 22 3e 0a 26 6c 74 3b 45 ="nowrap">.<E
4b40: 78 70 72 26 67 74 3b 3c 2f 74 64 3e 3c 74 64 20 xpr></td><td
4b50: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 3c align="center"><
4b60: 69 6d 67 20 73 72 63 3d 22 6d 61 74 63 68 5f 66 img src="match_f
4b70: 69 6c 65 73 2f 31 2e 67 69 66 22 20 61 6c 74 3d iles/1.gif" alt=
4b80: 22 26 6c 74 3b 67 72 61 70 68 69 63 26 67 74 3b "<graphic>
4b90: 22 3e 3c 2f 74 64 3e 3c 74 64 20 6e 6f 77 72 61 "></td><td nowra
4ba0: 70 3d 22 6e 6f 77 72 61 70 22 3e 26 6c 74 3b 76 p="nowrap"><v
4bb0: 61 72 26 67 74 3b 3c 2f 74 64 3e 3c 2f 74 72 3e ar></td></tr>
4bc0: 3c 74 72 3e 3c 74 64 20 6e 6f 77 72 61 70 3d 22 <tr><td nowrap="
4bd0: 6e 6f 77 72 61 70 22 3e 0a 20 20 20 20 20 20 20 nowrap">.
4be0: 20 20 20 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 </td><td alig
4bf0: 6e 3d 22 63 65 6e 74 65 72 22 3e 7c 3c 2f 74 64 n="center">|</td
4c00: 3e 3c 74 64 20 6e 6f 77 72 61 70 3d 22 6e 6f 77 ><td nowrap="now
4c10: 72 61 70 22 3e 26 6c 74 3b 69 6e 74 65 67 65 72 rap"><integer
4c20: 26 67 74 3b 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 ></td></tr><t
4c30: 72 3e 3c 74 64 20 6e 6f 77 72 61 70 3d 22 6e 6f r><td nowrap="no
4c40: 77 72 61 70 22 3e 0a 20 20 20 20 20 20 20 20 20 wrap">.
4c50: 20 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d </td><td align=
4c60: 22 63 65 6e 74 65 72 22 3e 7c 3c 2f 74 64 3e 3c "center">|</td><
4c70: 74 64 20 6e 6f 77 72 61 70 3d 22 6e 6f 77 72 61 td nowrap="nowra
4c80: 70 22 3e 3c 74 74 3e 28 69 66 3c 2f 74 74 3e 20 p"><tt>(if</tt>
4c90: 26 6c 74 3b 45 78 70 72 26 67 74 3b 20 26 6c 74 <Expr> <
4ca0: 3b 45 78 70 72 26 67 74 3b 20 26 6c 74 3b 45 78 ;Expr> <Ex
4cb0: 70 72 26 67 74 3b 3c 74 74 3e 29 3c 2f 74 74 3e pr><tt>)</tt>
4cc0: 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e 3c 74 </td></tr><tr><t
4cd0: 64 20 6e 6f 77 72 61 70 3d 22 6e 6f 77 72 61 70 d nowrap="nowrap
4ce0: 22 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 ">. </t
4cf0: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e d><td align="cen
4d00: 74 65 72 22 3e 7c 3c 2f 74 64 3e 3c 74 64 20 6e ter">|</td><td n
4d10: 6f 77 72 61 70 3d 22 6e 6f 77 72 61 70 22 3e 3c owrap="nowrap"><
4d20: 74 74 3e 28 3c 2f 74 74 3e 26 6c 74 3b 45 78 70 tt>(</tt><Exp
4d30: 72 26 67 74 3b 20 26 6c 74 3b 45 78 70 72 26 67 r> <Expr&g
4d40: 74 3b 2a 3c 74 74 3e 29 3c 2f 74 74 3e 0a 3c 2f t;*<tt>)</tt>.</
4d50: 74 64 3e 3c 2f 74 72 3e 3c 2f 74 62 6f 64 79 3e td></tr></tbody>
4d60: 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 70 3e 0a 0a 3c </table>..<p>..<
4d70: 2f 70 3e 3c 70 3e 3c 74 74 3e 28 64 65 66 69 6e /p><p><tt>(defin
4d80: 65 26 6e 62 73 70 3b 70 61 72 73 65 3c 62 72 3e e parse<br>
4d90: 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 6c .. (l
4da0: 61 6d 62 64 61 26 6e 62 73 70 3b 28 78 29 3c 62 ambda (x)<b
4db0: 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b r>..
4dc0: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 64 65 66 (def
4dd0: 69 6e 65 26 6e 62 73 70 3b 50 72 6f 67 3c 62 72 ine Prog<br
4de0: 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 >.. &
4df0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
4e00: 3b 26 6e 62 73 70 3b 28 6c 61 6d 62 64 61 26 6e ; (lambda&n
4e10: 62 73 70 3b 28 78 29 3c 62 72 3e 0a 0a 26 6e 62 bsp;(x)<br>..&nb
4e20: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
4e30: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
4e40: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 6d 61 ; (ma
4e50: 74 63 68 26 6e 62 73 70 3b 78 3c 62 72 3e 0a 0a tch x<br>..
4e60: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
4e70: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
4e80: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
4e90: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 28 70 72 [(pr
4ea0: 6f 67 72 61 6d 26 6e 62 73 70 3b 2c 5b 53 74 6d ogram ,[Stm
4eb0: 74 26 6e 62 73 70 3b 2d 26 67 74 3b 26 6e 62 73 t ->&nbs
4ec0: 70 3b 73 2a 5d 26 6e 62 73 70 3b 2e 2e 2e 26 6e p;s*] ...&n
4ed0: 62 73 70 3b 2c 5b 45 78 70 72 26 6e 62 73 70 3b bsp;,[Expr
4ee0: 2d 26 67 74 3b 26 6e 62 73 70 3b 65 5d 29 3c 62 -> e])<b
4ef0: 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b r>..
4f00: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
4f10: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
4f20: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
4f30: 26 6e 62 73 70 3b 60 28 62 65 67 69 6e 26 6e 62 `(begin&nb
4f40: 73 70 3b 2c 73 2a 26 6e 62 73 70 3b 2e 2e 2e 26 sp;,s* ...&
4f50: 6e 62 73 70 3b 2c 65 29 5d 3c 62 72 3e 0a 0a 26 nbsp;,e)]<br>..&
4f60: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
4f70: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
4f80: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
4f90: 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 2c 78 26 6e nbsp; [,x&n
4fa0: 62 73 70 3b 28 65 72 72 6f 72 26 6e 62 73 70 3b bsp;(error
4fb0: 27 70 61 72 73 65 26 6e 62 73 70 3b 22 69 6e 76 'parse "inv
4fc0: 61 6c 69 64 26 6e 62 73 70 3b 70 72 6f 67 72 61 alid progra
4fd0: 6d 26 6e 62 73 70 3b 7e 73 22 26 6e 62 73 70 3b m ~s"
4fe0: 78 29 5d 29 29 29 3c 62 72 3e 0a 0a 26 6e 62 73 x)])))<br>..&nbs
4ff0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
5000: 62 73 70 3b 28 64 65 66 69 6e 65 26 6e 62 73 70 bsp;(define 
5010: 3b 53 74 6d 74 3c 62 72 3e 0a 0a 26 6e 62 73 70 ;Stmt<br>.. 
5020: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
5030: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 sp; (
5040: 6c 61 6d 62 64 61 26 6e 62 73 70 3b 28 78 29 3c lambda (x)<
5050: 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 br>..  
5060: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
5070: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
5080: 6e 62 73 70 3b 28 6d 61 74 63 68 26 6e 62 73 70 nbsp;(match 
5090: 3b 78 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e ;x<br>.. &n
50a0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
50b0: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
50c0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
50d0: 62 73 70 3b 5b 28 69 66 26 6e 62 73 70 3b 2c 5b bsp;[(if ,[
50e0: 45 78 70 72 26 6e 62 73 70 3b 2d 26 67 74 3b 26 Expr ->&
50f0: 6e 62 73 70 3b 65 5d 26 6e 62 73 70 3b 2c 5b 53 nbsp;e] ,[S
5100: 74 6d 74 26 6e 62 73 70 3b 2d 26 67 74 3b 26 6e tmt ->&n
5110: 62 73 70 3b 73 31 5d 26 6e 62 73 70 3b 2c 5b 53 bsp;s1] ,[S
5120: 74 6d 74 26 6e 62 73 70 3b 2d 26 67 74 3b 26 6e tmt ->&n
5130: 62 73 70 3b 73 32 5d 29 3c 62 72 3e 0a 0a 26 6e bsp;s2])<br>..&n
5140: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
5150: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
5160: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
5170: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
5180: 60 28 69 66 26 6e 62 73 70 3b 2c 65 26 6e 62 73 `(if ,e&nbs
5190: 70 3b 2c 73 31 26 6e 62 73 70 3b 2c 73 32 29 5d p;,s1 ,s2)]
51a0: 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 <br>.. &nbs
51b0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
51c0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
51d0: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
51e0: 70 3b 5b 28 73 65 74 21 26 6e 62 73 70 3b 2c 76 p;[(set! ,v
51f0: 26 6e 62 73 70 3b 2c 5b 45 78 70 72 26 6e 62 73 ,[Expr&nbs
5200: 70 3b 2d 26 67 74 3b 26 6e 62 73 70 3b 65 5d 29 p;-> e])
5210: 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 <br>.. &nbs
5220: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
5230: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
5240: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
5250: 70 3b 26 6e 62 73 70 3b 28 67 75 61 72 64 26 6e p; (guard&n
5260: 62 73 70 3b 28 73 79 6d 62 6f 6c 3f 26 6e 62 73 bsp;(symbol?&nbs
5270: 70 3b 76 29 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 p;v))<br>.. 
5280: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
5290: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
52a0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
52b0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 60 28 73 ; `(s
52c0: 65 74 21 26 6e 62 73 70 3b 2c 76 26 6e 62 73 70 et! ,v 
52d0: 3b 2c 65 29 5d 3c 62 72 3e 0a 0a 26 6e 62 73 70 ;,e)]<br>.. 
52e0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
52f0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
5300: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
5310: 3b 26 6e 62 73 70 3b 5b 2c 78 26 6e 62 73 70 3b ; [,x
5320: 28 65 72 72 6f 72 26 6e 62 73 70 3b 27 70 61 72 (error 'par
5330: 73 65 26 6e 62 73 70 3b 22 69 6e 76 61 6c 69 64 se "invalid
5340: 26 6e 62 73 70 3b 73 74 61 74 65 6d 65 6e 74 26 statement&
5350: 6e 62 73 70 3b 7e 73 22 26 6e 62 73 70 3b 78 29 nbsp;~s" x)
5360: 5d 29 29 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b ])))<br>..
5370: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
5380: 70 3b 28 64 65 66 69 6e 65 26 6e 62 73 70 3b 45 p;(define E
5390: 78 70 72 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 xpr<br>.. &
53a0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
53b0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 6c 61 ; (la
53c0: 6d 62 64 61 26 6e 62 73 70 3b 28 78 29 3c 62 72 mbda (x)<br
53d0: 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 >.. &
53e0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
53f0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
5400: 73 70 3b 28 6d 61 74 63 68 26 6e 62 73 70 3b 78 sp;(match x
5410: 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 <br>.. &nbs
5420: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
5430: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
5440: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
5450: 70 3b 5b 2c 76 26 6e 62 73 70 3b 28 67 75 61 72 p;[,v (guar
5460: 64 26 6e 62 73 70 3b 28 73 79 6d 62 6f 6c 3f 26 d (symbol?&
5470: 6e 62 73 70 3b 76 29 29 26 6e 62 73 70 3b 76 5d nbsp;v)) v]
5480: 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 <br>.. &nbs
5490: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
54a0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
54b0: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
54c0: 70 3b 5b 2c 6e 26 6e 62 73 70 3b 28 67 75 61 72 p;[,n (guar
54d0: 64 26 6e 62 73 70 3b 28 69 6e 74 65 67 65 72 3f d (integer?
54e0: 26 6e 62 73 70 3b 6e 29 29 26 6e 62 73 70 3b 6e n)) n
54f0: 5d 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 ]<br>.. &nb
5500: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
5510: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
5520: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
5530: 73 70 3b 5b 28 69 66 26 6e 62 73 70 3b 2c 5b 65 sp;[(if ,[e
5540: 31 5d 26 6e 62 73 70 3b 2c 5b 65 32 5d 26 6e 62 1] ,[e2]&nb
5550: 73 70 3b 2c 5b 65 33 5d 29 3c 62 72 3e 0a 0a 26 sp;,[e3])<br>..&
5560: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
5570: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
5580: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
5590: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
55a0: 3b 60 28 69 66 26 6e 62 73 70 3b 2c 65 31 26 6e ;`(if ,e1&n
55b0: 62 73 70 3b 2c 65 32 26 6e 62 73 70 3b 2c 65 33 bsp;,e2 ,e3
55c0: 29 5d 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e )]<br>.. &n
55d0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
55e0: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
55f0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
5600: 62 73 70 3b 5b 28 2c 5b 72 61 74 6f 72 5d 26 6e bsp;[(,[rator]&n
5610: 62 73 70 3b 2c 5b 72 61 6e 64 2a 5d 26 6e 62 73 bsp;,[rand*]&nbs
5620: 70 3b 2e 2e 2e 29 26 6e 62 73 70 3b 60 28 2c 72 p;...) `(,r
5630: 61 74 6f 72 26 6e 62 73 70 3b 2c 72 61 6e 64 2a ator ,rand*
5640: 26 6e 62 73 70 3b 2e 2e 2e 29 5d 3c 62 72 3e 0a ...)]<br>.
5650: 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 . &nb
5660: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
5670: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
5680: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 2c 78 ; [,x
5690: 26 6e 62 73 70 3b 28 65 72 72 6f 72 26 6e 62 73 (error&nbs
56a0: 70 3b 27 70 61 72 73 65 26 6e 62 73 70 3b 22 69 p;'parse "i
56b0: 6e 76 61 6c 69 64 26 6e 62 73 70 3b 65 78 70 72 nvalid expr
56c0: 65 73 73 69 6f 6e 26 6e 62 73 70 3b 7e 73 22 26 ession ~s"&
56d0: 6e 62 73 70 3b 78 29 5d 29 29 29 3c 62 72 3e 0a nbsp;x)])))<br>.
56e0: 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 . &nb
56f0: 73 70 3b 26 6e 62 73 70 3b 28 50 72 6f 67 26 6e sp; (Prog&n
5700: 62 73 70 3b 78 29 29 29 0a 3c 62 72 3e 0a 3c 62 bsp;x))).<br>.<b
5710: 72 3e 0a 28 70 61 72 73 65 26 6e 62 73 70 3b 27 r>.(parse '
5720: 28 70 72 6f 67 72 61 6d 26 6e 62 73 70 3b 28 73 (program (s
5730: 65 74 21 26 6e 62 73 70 3b 78 26 6e 62 73 70 3b et! x
5740: 33 29 26 6e 62 73 70 3b 28 2b 26 6e 62 73 70 3b 3) (+
5750: 78 26 6e 62 73 70 3b 34 29 29 29 26 6e 62 73 70 x 4))) 
5760: 3b 3c 69 6d 67 20 73 72 63 3d 22 6d 61 74 63 68 ;<img src="match
5770: 5f 66 69 6c 65 73 2f 30 2e 67 69 66 22 20 61 6c _files/0.gif" al
5780: 74 3d 22 26 6c 74 3b 67 72 61 70 68 69 63 26 67 t="<graphic&g
5790: 74 3b 22 3e 26 6e 62 73 70 3b 28 62 65 67 69 6e t;"> (begin
57a0: 26 6e 62 73 70 3b 28 73 65 74 21 26 6e 62 73 70 (set! 
57b0: 3b 78 26 6e 62 73 70 3b 33 29 26 6e 62 73 70 3b ;x 3)
57c0: 28 2b 26 6e 62 73 70 3b 78 26 6e 62 73 70 3b 34 (+ x 4
57d0: 29 29 3c 2f 74 74 3e 0a 3c 2f 70 3e 3c 70 3e 41 ))</tt>.</p><p>A
57e0: 20 6d 65 6e 74 69 6f 6e 65 64 20 61 62 6f 76 65 mentioned above
57f0: 2c 20 74 68 65 20 6f 70 65 72 61 74 6f 72 20 73 , the operator s
5800: 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20 pecified in the
5810: 63 61 74 61 20 73 79 6e 74 61 78 20 63 61 6e 20 cata syntax can
5820: 62 65 20 61 6e 79 0a 65 78 70 72 65 73 73 69 6f be any.expressio
5830: 6e 2e 0a 57 65 20 63 61 6e 20 6d 61 6b 65 20 75 n..We can make u
5840: 73 65 20 6f 66 20 74 68 69 73 20 74 6f 20 70 61 se of this to pa
5850: 73 73 20 61 6c 6f 6e 67 20 61 6e 20 65 6e 76 69 ss along an envi
5860: 72 6f 6e 6d 65 6e 74 2c 20 69 66 20 6e 65 65 64 ronment, if need
5870: 65 64 2c 20 73 61 79 0a 74 6f 20 68 61 6e 64 6c ed, say.to handl
5880: 65 20 61 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 e a version of t
5890: 68 65 20 6c 61 6e 67 75 61 67 65 20 61 62 6f 76 he language abov
58a0: 65 20 65 78 74 65 6e 64 65 64 20 77 69 74 68 20 e extended with
58b0: 61 0a 3c 74 74 3e 6c 65 74 3c 2f 74 74 3e 20 65 a.<tt>let</tt> e
58c0: 78 70 72 65 73 73 69 6f 6e 20 74 68 61 74 20 63 xpression that c
58d0: 72 65 61 74 65 73 20 62 69 6e 64 69 6e 67 73 20 reates bindings
58e0: 74 68 61 74 20 6d 69 67 68 74 20 73 68 61 64 6f that might shado
58f0: 77 20 6b 65 79 77 6f 72 64 73 2e 0a 0a 3c 2f 70 w keywords...</p
5900: 3e 3c 70 3e 0a 0a 20 20 0a 20 20 0a 20 20 0a 20 ><p>.. . . .
5910: 20 3c 2f 70 3e 3c 74 61 62 6c 65 3e 3c 74 62 6f </p><table><tbo
5920: 64 79 3e 3c 74 72 3e 3c 74 64 20 6e 6f 77 72 61 dy><tr><td nowra
5930: 70 3d 22 6e 6f 77 72 61 70 22 3e 0a 26 6c 74 3b p="nowrap">.<
5940: 50 72 6f 67 26 67 74 3b 3c 2f 74 64 3e 3c 74 64 Prog></td><td
5950: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e align="center">
5960: 3c 69 6d 67 20 73 72 63 3d 22 6d 61 74 63 68 5f <img src="match_
5970: 66 69 6c 65 73 2f 31 2e 67 69 66 22 20 61 6c 74 files/1.gif" alt
5980: 3d 22 26 6c 74 3b 67 72 61 70 68 69 63 26 67 74 ="<graphic>
5990: 3b 22 3e 3c 2f 74 64 3e 3c 74 64 20 6e 6f 77 72 ;"></td><td nowr
59a0: 61 70 3d 22 6e 6f 77 72 61 70 22 3e 3c 74 74 3e ap="nowrap"><tt>
59b0: 28 70 72 6f 67 72 61 6d 3c 2f 74 74 3e 20 26 6c (program</tt> &l
59c0: 74 3b 53 74 6d 74 26 67 74 3b 2a 20 26 6c 74 3b t;Stmt>* <
59d0: 45 78 70 72 26 67 74 3b 3c 74 74 3e 29 3c 2f 74 Expr><tt>)</t
59e0: 74 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e t></td></tr><tr>
59f0: 3c 74 64 20 6e 6f 77 72 61 70 3d 22 6e 6f 77 72 <td nowrap="nowr
5a00: 61 70 22 3e 0a 26 6c 74 3b 53 74 6d 74 26 67 74 ap">.<Stmt>
5a10: 3b 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d ;</td><td align=
5a20: 22 63 65 6e 74 65 72 22 3e 3c 69 6d 67 20 73 72 "center"><img sr
5a30: 63 3d 22 6d 61 74 63 68 5f 66 69 6c 65 73 2f 31 c="match_files/1
5a40: 2e 67 69 66 22 20 61 6c 74 3d 22 26 6c 74 3b 67 .gif" alt="<g
5a50: 72 61 70 68 69 63 26 67 74 3b 22 3e 3c 2f 74 64 raphic>"></td
5a60: 3e 3c 74 64 20 6e 6f 77 72 61 70 3d 22 6e 6f 77 ><td nowrap="now
5a70: 72 61 70 22 3e 3c 74 74 3e 28 69 66 3c 2f 74 74 rap"><tt>(if</tt
5a80: 3e 20 26 6c 74 3b 45 78 70 72 26 67 74 3b 20 26 > <Expr> &
5a90: 6c 74 3b 53 74 6d 74 26 67 74 3b 20 26 6c 74 3b lt;Stmt> <
5aa0: 53 74 6d 74 26 67 74 3b 3c 74 74 3e 29 3c 2f 74 Stmt><tt>)</t
5ab0: 74 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e t></td></tr><tr>
5ac0: 3c 74 64 20 6e 6f 77 72 61 70 3d 22 6e 6f 77 72 <td nowrap="nowr
5ad0: 61 70 22 3e 0a 20 20 20 20 20 20 20 20 20 20 3c ap">. <
5ae0: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 /td><td align="c
5af0: 65 6e 74 65 72 22 3e 7c 3c 2f 74 64 3e 3c 74 64 enter">|</td><td
5b00: 20 6e 6f 77 72 61 70 3d 22 6e 6f 77 72 61 70 22 nowrap="nowrap"
5b10: 3e 3c 74 74 3e 28 73 65 74 21 3c 2f 74 74 3e 20 ><tt>(set!</tt>
5b20: 26 6c 74 3b 76 61 72 26 67 74 3b 20 26 6c 74 3b <var> <
5b30: 45 78 70 72 26 67 74 3b 3c 74 74 3e 29 3c 2f 74 Expr><tt>)</t
5b40: 74 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e t></td></tr><tr>
5b50: 3c 74 64 20 6e 6f 77 72 61 70 3d 22 6e 6f 77 72 <td nowrap="nowr
5b60: 61 70 22 3e 0a 26 6c 74 3b 45 78 70 72 26 67 74 ap">.<Expr>
5b70: 3b 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d ;</td><td align=
5b80: 22 63 65 6e 74 65 72 22 3e 3c 69 6d 67 20 73 72 "center"><img sr
5b90: 63 3d 22 6d 61 74 63 68 5f 66 69 6c 65 73 2f 31 c="match_files/1
5ba0: 2e 67 69 66 22 20 61 6c 74 3d 22 26 6c 74 3b 67 .gif" alt="<g
5bb0: 72 61 70 68 69 63 26 67 74 3b 22 3e 3c 2f 74 64 raphic>"></td
5bc0: 3e 3c 74 64 20 6e 6f 77 72 61 70 3d 22 6e 6f 77 ><td nowrap="now
5bd0: 72 61 70 22 3e 26 6c 74 3b 76 61 72 26 67 74 3b rap"><var>
5be0: 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e 3c 74 </td></tr><tr><t
5bf0: 64 20 6e 6f 77 72 61 70 3d 22 6e 6f 77 72 61 70 d nowrap="nowrap
5c00: 22 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 ">. </t
5c10: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e d><td align="cen
5c20: 74 65 72 22 3e 7c 3c 2f 74 64 3e 3c 74 64 20 6e ter">|</td><td n
5c30: 6f 77 72 61 70 3d 22 6e 6f 77 72 61 70 22 3e 26 owrap="nowrap">&
5c40: 6c 74 3b 69 6e 74 65 67 65 72 26 67 74 3b 3c 2f lt;integer></
5c50: 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e 3c 74 64 20 td></tr><tr><td
5c60: 6e 6f 77 72 61 70 3d 22 6e 6f 77 72 61 70 22 3e nowrap="nowrap">
5c70: 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e . </td>
5c80: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 <td align="cente
5c90: 72 22 3e 7c 3c 2f 74 64 3e 3c 74 64 20 6e 6f 77 r">|</td><td now
5ca0: 72 61 70 3d 22 6e 6f 77 72 61 70 22 3e 3c 74 74 rap="nowrap"><tt
5cb0: 3e 28 69 66 3c 2f 74 74 3e 20 26 6c 74 3b 45 78 >(if</tt> <Ex
5cc0: 70 72 26 67 74 3b 20 26 6c 74 3b 45 78 70 72 26 pr> <Expr&
5cd0: 67 74 3b 20 26 6c 74 3b 45 78 70 72 26 67 74 3b gt; <Expr>
5ce0: 3c 74 74 3e 29 3c 2f 74 74 3e 3c 2f 74 64 3e 3c <tt>)</tt></td><
5cf0: 2f 74 72 3e 3c 74 72 3e 3c 74 64 20 6e 6f 77 72 /tr><tr><td nowr
5d00: 61 70 3d 22 6e 6f 77 72 61 70 22 3e 0a 20 20 20 ap="nowrap">.
5d10: 20 20 20 20 20 20 20 3c 2f 74 64 3e 3c 74 64 20 </td><td
5d20: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 7c align="center">|
5d30: 3c 2f 74 64 3e 3c 74 64 20 6e 6f 77 72 61 70 3d </td><td nowrap=
5d40: 22 6e 6f 77 72 61 70 22 3e 3c 74 74 3e 28 6c 65 "nowrap"><tt>(le
5d50: 74 3c 2f 74 74 3e 20 3c 74 74 3e 28 28 3c 2f 74 t</tt> <tt>((</t
5d60: 74 3e 3c 74 74 3e 3c 69 3e 76 61 72 3c 2f 69 3e t><tt><i>var</i>
5d70: 3c 2f 74 74 3e 20 26 6c 74 3b 45 78 70 72 26 67 </tt> <Expr&g
5d80: 74 3b 3c 74 74 3e 29 29 3c 2f 74 74 3e 20 26 6c t;<tt>))</tt> &l
5d90: 74 3b 45 78 70 72 26 67 74 3b 3c 74 74 3e 29 3c t;Expr><tt>)<
5da0: 2f 74 74 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 /tt></td></tr><t
5db0: 72 3e 3c 74 64 20 6e 6f 77 72 61 70 3d 22 6e 6f r><td nowrap="no
5dc0: 77 72 61 70 22 3e 0a 20 20 20 20 20 20 20 20 20 wrap">.
5dd0: 20 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d </td><td align=
5de0: 22 63 65 6e 74 65 72 22 3e 7c 3c 2f 74 64 3e 3c "center">|</td><
5df0: 74 64 20 6e 6f 77 72 61 70 3d 22 6e 6f 77 72 61 td nowrap="nowra
5e00: 70 22 3e 3c 74 74 3e 28 3c 2f 74 74 3e 26 6c 74 p"><tt>(</tt><
5e10: 3b 45 78 70 72 26 67 74 3b 20 26 6c 74 3b 45 78 ;Expr> <Ex
5e20: 70 72 26 67 74 3b 2a 3c 74 74 3e 29 3c 2f 74 74 pr>*<tt>)</tt
5e30: 3e 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 2f 74 62 >.</td></tr></tb
5e40: 6f 64 79 3e 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 70 ody></table>..<p
5e50: 3e 0a 49 6e 20 74 68 65 20 66 6f 6c 6c 6f 77 69 >.In the followi
5e60: 6e 67 20 76 65 72 73 69 6f 6e 20 6f 66 20 3c 74 ng version of <t
5e70: 74 3e 70 61 72 73 65 3c 2f 74 74 3e 2c 20 74 68 t>parse</tt>, th
5e80: 65 20 6f 75 74 70 75 74 20 69 73 20 6d 6f 72 65 e output is more
5e90: 20 73 74 72 75 63 74 75 72 65 64 2c 0a 77 69 74 structured,.wit
5ea0: 68 20 61 6e 20 65 78 70 6c 69 63 69 74 20 3c 74 h an explicit <t
5eb0: 74 3e 63 61 6c 6c 3c 2f 74 74 3e 20 6b 65 79 77 t>call</tt> keyw
5ec0: 6f 72 64 20 73 6f 20 74 68 61 74 20 74 68 65 72 ord so that ther
5ed0: 65 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 61 6e e will not be an
5ee0: 79 0a 63 6f 6e 66 75 73 69 6f 6e 20 69 6e 20 74 y.confusion in t
5ef0: 68 65 20 6f 75 74 70 75 74 20 62 65 74 77 65 65 he output betwee
5f00: 6e 20 61 20 63 61 6c 6c 20 74 6f 20 74 68 65 20 n a call to the
5f10: 76 61 6c 75 65 20 6f 66 20 61 6e 20 3c 74 74 3e value of an <tt>
5f20: 69 66 3c 2f 74 74 3e 0a 76 61 72 69 61 62 6c 65 if</tt>.variable
5f30: 20 61 6e 64 20 61 20 3c 74 74 3e 69 66 3c 2f 74 and a <tt>if</t
5f40: 74 3e 20 65 78 70 72 65 73 73 69 6f 6e 20 6b 65 t> expression ke
5f50: 79 65 64 20 62 79 20 74 68 65 20 3c 74 74 3e 69 yed by the <tt>i
5f60: 66 3c 2f 74 74 3e 20 6b 65 79 77 6f 72 64 2e 0a f</tt> keyword..
5f70: 0a 3c 2f 70 3e 3c 70 3e 0a 0a 3c 2f 70 3e 3c 70 .</p><p>..</p><p
5f80: 3e 3c 74 74 3e 28 64 65 66 69 6e 65 26 6e 62 73 ><tt>(define&nbs
5f90: 70 3b 70 61 72 73 65 3c 62 72 3e 0a 0a 26 6e 62 p;parse<br>..&nb
5fa0: 73 70 3b 26 6e 62 73 70 3b 28 6c 61 6d 62 64 61 sp; (lambda
5fb0: 26 6e 62 73 70 3b 28 78 29 3c 62 72 3e 0a 0a 26 (x)<br>..&
5fc0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
5fd0: 3b 26 6e 62 73 70 3b 28 64 65 66 69 6e 65 26 6e ; (define&n
5fe0: 62 73 70 3b 50 72 6f 67 3c 62 72 3e 0a 0a 26 6e bsp;Prog<br>..&n
5ff0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
6000: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
6010: 70 3b 28 6c 61 6d 62 64 61 26 6e 62 73 70 3b 28 p;(lambda (
6020: 78 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e x)<br>.. &n
6030: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
6040: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
6050: 70 3b 26 6e 62 73 70 3b 28 6d 61 74 63 68 26 6e p; (match&n
6060: 62 73 70 3b 78 3c 62 72 3e 0a 0a 26 6e 62 73 70 bsp;x<br>.. 
6070: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
6080: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
6090: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
60a0: 3b 26 6e 62 73 70 3b 5b 28 70 72 6f 67 72 61 6d ; [(program
60b0: 26 6e 62 73 70 3b 2c 5b 53 74 6d 74 26 6e 62 73 ,[Stmt&nbs
60c0: 70 3b 2d 26 67 74 3b 26 6e 62 73 70 3b 73 2a 5d p;-> s*]
60d0: 26 6e 62 73 70 3b 2e 2e 2e 26 6e 62 73 70 3b 2c ... ,
60e0: 5b 28 45 78 70 72 26 6e 62 73 70 3b 27 28 29 29 [(Expr '())
60f0: 26 6e 62 73 70 3b 2d 26 67 74 3b 26 6e 62 73 70 -> 
6100: 3b 65 5d 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b ;e])<br>..
6110: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
6120: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
6130: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
6140: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 60 28 62 65 `(be
6150: 67 69 6e 26 6e 62 73 70 3b 2c 73 2a 26 6e 62 73 gin ,s*&nbs
6160: 70 3b 2e 2e 2e 26 6e 62 73 70 3b 2c 65 29 5d 3c p;... ,e)]<
6170: 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 br>..  
6180: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
6190: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
61a0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
61b0: 3b 5b 2c 78 26 6e 62 73 70 3b 28 65 72 72 6f 72 ;[,x (error
61c0: 26 6e 62 73 70 3b 27 70 61 72 73 65 26 6e 62 73 'parse&nbs
61d0: 70 3b 22 69 6e 76 61 6c 69 64 26 6e 62 73 70 3b p;"invalid
61e0: 70 72 6f 67 72 61 6d 26 6e 62 73 70 3b 7e 73 22 program ~s"
61f0: 26 6e 62 73 70 3b 78 29 5d 29 29 29 3c 62 72 3e x)])))<br>
6200: 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e .. &n
6210: 62 73 70 3b 26 6e 62 73 70 3b 28 64 65 66 69 6e bsp; (defin
6220: 65 26 6e 62 73 70 3b 53 74 6d 74 3c 62 72 3e 0a e Stmt<br>.
6230: 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 . &nb
6240: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
6250: 6e 62 73 70 3b 28 6c 61 6d 62 64 61 26 6e 62 73 nbsp;(lambda&nbs
6260: 70 3b 28 78 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 p;(x)<br>.. 
6270: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
6280: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
6290: 6e 62 73 70 3b 26 6e 62 73 70 3b 28 6d 61 74 63 nbsp; (matc
62a0: 68 26 6e 62 73 70 3b 78 3c 62 72 3e 0a 0a 26 6e h x<br>..&n
62b0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
62c0: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
62d0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
62e0: 62 73 70 3b 26 6e 62 73 70 3b 5b 28 69 66 26 6e bsp; [(if&n
62f0: 62 73 70 3b 2c 5b 28 45 78 70 72 26 6e 62 73 70 bsp;,[(Expr 
6300: 3b 27 28 29 29 26 6e 62 73 70 3b 2d 26 67 74 3b ;'()) ->
6310: 26 6e 62 73 70 3b 65 5d 26 6e 62 73 70 3b 2c 5b e] ,[
6320: 53 74 6d 74 26 6e 62 73 70 3b 2d 26 67 74 3b 26 Stmt ->&
6330: 6e 62 73 70 3b 73 31 5d 26 6e 62 73 70 3b 2c 5b nbsp;s1] ,[
6340: 53 74 6d 74 26 6e 62 73 70 3b 2d 26 67 74 3b 26 Stmt ->&
6350: 6e 62 73 70 3b 73 32 5d 29 3c 62 72 3e 0a 0a 26 nbsp;s2])<br>..&
6360: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
6370: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
6380: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
6390: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
63a0: 3b 60 28 69 66 26 6e 62 73 70 3b 2c 65 26 6e 62 ;`(if ,e&nb
63b0: 73 70 3b 2c 73 31 26 6e 62 73 70 3b 2c 73 32 29 sp;,s1 ,s2)
63c0: 5d 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 ]<br>.. &nb
63d0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
63e0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
63f0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
6400: 73 70 3b 5b 28 73 65 74 21 26 6e 62 73 70 3b 2c sp;[(set! ,
6410: 76 26 6e 62 73 70 3b 2c 5b 28 45 78 70 72 26 6e v ,[(Expr&n
6420: 62 73 70 3b 27 28 29 29 26 6e 62 73 70 3b 2d 26 bsp;'()) -&
6430: 67 74 3b 26 6e 62 73 70 3b 65 5d 29 3c 62 72 3e gt; e])<br>
6440: 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e .. &n
6450: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
6460: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
6470: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
6480: 62 73 70 3b 28 67 75 61 72 64 26 6e 62 73 70 3b bsp;(guard
6490: 28 73 79 6d 62 6f 6c 3f 26 6e 62 73 70 3b 76 29 (symbol? v)
64a0: 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 )<br>.. &nb
64b0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
64c0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
64d0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
64e0: 73 70 3b 26 6e 62 73 70 3b 60 28 73 65 74 21 26 sp; `(set!&
64f0: 6e 62 73 70 3b 2c 76 26 6e 62 73 70 3b 2c 65 29 nbsp;,v ,e)
6500: 5d 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 ]<br>.. &nb
6510: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
6520: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
6530: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
6540: 73 70 3b 5b 2c 78 26 6e 62 73 70 3b 28 65 72 72 sp;[,x (err
6550: 6f 72 26 6e 62 73 70 3b 27 70 61 72 73 65 26 6e or 'parse&n
6560: 62 73 70 3b 22 69 6e 76 61 6c 69 64 26 6e 62 73 bsp;"invalid&nbs
6570: 70 3b 73 74 61 74 65 6d 65 6e 74 26 6e 62 73 70 p;statement 
6580: 3b 7e 73 22 26 6e 62 73 70 3b 78 29 5d 29 29 29 ;~s" x)])))
6590: 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 <br>.. &nbs
65a0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 64 p; (d
65b0: 65 66 69 6e 65 26 6e 62 73 70 3b 45 78 70 72 3c efine Expr<
65c0: 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 br>..  
65d0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
65e0: 73 70 3b 26 6e 62 73 70 3b 28 6c 61 6d 62 64 61 sp; (lambda
65f0: 26 6e 62 73 70 3b 28 65 6e 76 29 3c 62 72 3e 0a (env)<br>.
6600: 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 . &nb
6610: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
6620: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
6630: 3b 28 6c 61 6d 62 64 61 26 6e 62 73 70 3b 28 78 ;(lambda (x
6640: 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 )<br>.. &nb
6650: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
6660: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
6670: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
6680: 73 70 3b 28 6d 61 74 63 68 26 6e 62 73 70 3b 78 sp;(match x
6690: 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 <br>.. &nbs
66a0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
66b0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
66c0: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
66d0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 2c p; [,
66e0: 76 26 6e 62 73 70 3b 28 67 75 61 72 64 26 6e 62 v (guard&nb
66f0: 73 70 3b 28 73 79 6d 62 6f 6c 3f 26 6e 62 73 70 sp;(symbol? 
6700: 3b 76 29 29 26 6e 62 73 70 3b 76 5d 3c 62 72 3e ;v)) v]<br>
6710: 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e .. &n
6720: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
6730: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
6740: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
6750: 62 73 70 3b 26 6e 62 73 70 3b 5b 2c 6e 26 6e 62 bsp; [,n&nb
6760: 73 70 3b 28 67 75 61 72 64 26 6e 62 73 70 3b 28 sp;(guard (
6770: 69 6e 74 65 67 65 72 3f 26 6e 62 73 70 3b 6e 29 integer? n)
6780: 29 26 6e 62 73 70 3b 6e 5d 3c 62 72 3e 0a 0a 26 ) n]<br>..&
6790: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
67a0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
67b0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
67c0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
67d0: 3b 26 6e 62 73 70 3b 5b 28 69 66 26 6e 62 73 70 ; [(if 
67e0: 3b 2c 5b 65 31 5d 26 6e 62 73 70 3b 2c 5b 65 32 ;,[e1] ,[e2
67f0: 5d 26 6e 62 73 70 3b 2c 5b 65 33 5d 29 3c 62 72 ] ,[e3])<br
6800: 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 >.. &
6810: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
6820: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
6830: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
6840: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
6850: 3b 28 67 75 61 72 64 26 6e 62 73 70 3b 28 6e 6f ;(guard (no
6860: 74 26 6e 62 73 70 3b 28 6d 65 6d 71 26 6e 62 73 t (memq&nbs
6870: 70 3b 27 69 66 26 6e 62 73 70 3b 65 6e 76 29 29 p;'if env))
6880: 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 )<br>.. &nb
6890: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
68a0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
68b0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
68c0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
68d0: 6e 62 73 70 3b 60 28 69 66 26 6e 62 73 70 3b 2c nbsp;`(if ,
68e0: 65 31 26 6e 62 73 70 3b 2c 65 32 26 6e 62 73 70 e1 ,e2 
68f0: 3b 2c 65 33 29 5d 3c 62 72 3e 0a 0a 26 6e 62 73 ;,e3)]<br>..&nbs
6900: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
6910: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
6920: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
6930: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
6940: 62 73 70 3b 5b 28 6c 65 74 26 6e 62 73 70 3b 28 bsp;[(let (
6950: 5b 2c 76 26 6e 62 73 70 3b 2c 5b 65 5d 5d 29 26 [,v ,[e]])&
6960: 6e 62 73 70 3b 2c 5b 28 45 78 70 72 26 6e 62 73 nbsp;,[(Expr&nbs
6970: 70 3b 28 63 6f 6e 73 26 6e 62 73 70 3b 76 26 6e p;(cons v&n
6980: 62 73 70 3b 65 6e 76 29 29 26 6e 62 73 70 3b 2d bsp;env)) -
6990: 26 67 74 3b 26 6e 62 73 70 3b 62 6f 64 79 5d 29 > body])
69a0: 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 <br>.. &nbs
69b0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
69c0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
69d0: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
69e0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
69f0: 62 73 70 3b 28 67 75 61 72 64 26 6e 62 73 70 3b bsp;(guard
6a00: 28 6e 6f 74 26 6e 62 73 70 3b 28 6d 65 6d 71 26 (not (memq&
6a10: 6e 62 73 70 3b 27 6c 65 74 26 6e 62 73 70 3b 65 nbsp;'let e
6a20: 6e 76 29 29 26 6e 62 73 70 3b 28 73 79 6d 62 6f nv)) (symbo
6a30: 6c 3f 26 6e 62 73 70 3b 76 29 29 3c 62 72 3e 0a l? v))<br>.
6a40: 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 . &nb
6a50: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
6a60: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
6a70: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
6a80: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 60 sp; `
6a90: 28 6c 65 74 26 6e 62 73 70 3b 28 5b 2c 76 26 6e (let ([,v&n
6aa0: 62 73 70 3b 2c 65 5d 29 26 6e 62 73 70 3b 2c 62 bsp;,e]) ,b
6ab0: 6f 64 79 29 5d 3c 62 72 3e 0a 0a 26 6e 62 73 70 ody)]<br>.. 
6ac0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
6ad0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
6ae0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
6af0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
6b00: 73 70 3b 5b 28 2c 5b 72 61 74 6f 72 5d 26 6e 62 sp;[(,[rator]&nb
6b10: 73 70 3b 2c 5b 72 61 6e 64 2a 5d 26 6e 62 73 70 sp;,[rand*] 
6b20: 3b 2e 2e 2e 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 ;...)<br>.. 
6b30: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
6b40: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
6b50: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
6b60: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
6b70: 73 70 3b 26 6e 62 73 70 3b 60 28 63 61 6c 6c 26 sp; `(call&
6b80: 6e 62 73 70 3b 2c 72 61 74 6f 72 26 6e 62 73 70 nbsp;,rator 
6b90: 3b 2c 72 61 6e 64 2a 26 6e 62 73 70 3b 2e 2e 2e ;,rand* ...
6ba0: 29 5d 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e )]<br>.. &n
6bb0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
6bc0: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
6bd0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
6be0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
6bf0: 5b 2c 78 26 6e 62 73 70 3b 28 65 72 72 6f 72 26 [,x (error&
6c00: 6e 62 73 70 3b 27 70 61 72 73 65 26 6e 62 73 70 nbsp;'parse 
6c10: 3b 22 69 6e 76 61 6c 69 64 26 6e 62 73 70 3b 65 ;"invalid e
6c20: 78 70 72 65 73 73 69 6f 6e 26 6e 62 73 70 3b 7e xpression ~
6c30: 73 22 26 6e 62 73 70 3b 78 29 5d 29 29 29 29 3c s" x)]))))<
6c40: 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 br>..  
6c50: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 50 72 ; (Pr
6c60: 6f 67 26 6e 62 73 70 3b 78 29 29 29 0a 3c 62 72 og x))).<br
6c70: 3e 0a 3c 62 72 3e 0a 28 70 61 72 73 65 3c 62 72 >.<br>.(parse<br
6c80: 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 27 >.. '
6c90: 28 70 72 6f 67 72 61 6d 26 6e 62 73 70 3b 26 6e (program &n
6ca0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
6cb0: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
6cc0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
6cd0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
6ce0: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
6cf0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
6d00: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
6d10: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
6d20: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 3c 69 p; <i
6d30: 6d 67 20 73 72 63 3d 22 6d 61 74 63 68 5f 66 69 mg src="match_fi
6d40: 6c 65 73 2f 67 68 6f 73 74 52 69 67 68 74 61 72 les/ghostRightar
6d50: 72 6f 77 2e 67 69 66 22 3e 26 6e 62 73 70 3b 28 row.gif"> (
6d60: 62 65 67 69 6e 3c 62 72 3e 0a 0a 26 6e 62 73 70 begin<br>.. 
6d70: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
6d80: 73 70 3b 26 6e 62 73 70 3b 28 6c 65 74 26 6e 62 sp; (let&nb
6d90: 73 70 3b 28 5b 69 66 26 6e 62 73 70 3b 28 69 66 sp;([if (if
6da0: 26 6e 62 73 70 3b 78 26 6e 62 73 70 3b 6c 69 73 x lis
6db0: 74 26 6e 62 73 70 3b 76 61 6c 75 65 73 29 5d 29 t values)])
6dc0: 26 6e 62 73 70 3b 3c 69 6d 67 20 73 72 63 3d 22 <img src="
6dd0: 6d 61 74 63 68 5f 66 69 6c 65 73 2f 30 2e 67 69 match_files/0.gi
6de0: 66 22 20 61 6c 74 3d 22 26 6c 74 3b 67 72 61 70 f" alt="<grap
6df0: 68 69 63 26 67 74 3b 22 3e 26 6e 62 73 70 3b 26 hic>"> &
6e00: 6e 62 73 70 3b 26 6e 62 73 70 3b 28 6c 65 74 26 nbsp; (let&
6e10: 6e 62 73 70 3b 28 5b 69 66 26 6e 62 73 70 3b 28 nbsp;([if (
6e20: 69 66 26 6e 62 73 70 3b 78 26 6e 62 73 70 3b 6c if x l
6e30: 69 73 74 26 6e 62 73 70 3b 76 61 6c 75 65 73 29 ist values)
6e40: 5d 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e ])<br>.. &n
6e50: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
6e60: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
6e70: 70 3b 28 69 66 26 6e 62 73 70 3b 31 26 6e 62 73 p;(if 1&nbs
6e80: 70 3b 32 26 6e 62 73 70 3b 33 29 29 29 29 26 6e p;2 3))))&n
6e90: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
6ea0: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
6eb0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
6ec0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
6ed0: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
6ee0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 3c 69 p; <i
6ef0: 6d 67 20 73 72 63 3d 22 6d 61 74 63 68 5f 66 69 mg src="match_fi
6f00: 6c 65 73 2f 67 68 6f 73 74 52 69 67 68 74 61 72 les/ghostRightar
6f10: 72 6f 77 2e 67 69 66 22 3e 26 6e 62 73 70 3b 26 row.gif"> &
6f20: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
6f30: 3b 26 6e 62 73 70 3b 28 63 61 6c 6c 26 6e 62 73 ; (call&nbs
6f40: 70 3b 69 66 26 6e 62 73 70 3b 31 26 6e 62 73 70 p;if 1 
6f50: 3b 32 26 6e 62 73 70 3b 33 29 29 29 3c 2f 74 74 ;2 3)))</tt
6f60: 3e 0a 3c 2f 70 3e 3c 70 3e 57 68 65 6e 20 72 65 >.</p><p>When re
6f70: 63 75 72 72 69 6e 67 20 76 69 61 20 61 20 63 61 curring via a ca
6f80: 74 61 20 63 61 6c 6c 20 77 69 74 68 6f 75 74 20 ta call without
6f90: 61 6e 20 65 78 70 6c 69 63 69 74 20 6f 70 65 72 an explicit oper
6fa0: 61 74 6f 72 2c 20 65 2e 67 2e 2c 0a 77 69 74 68 ator, e.g.,.with
6fb0: 69 6e 20 74 68 65 20 3c 74 74 3e 45 78 70 72 3c in the <tt>Expr<
6fc0: 2f 74 74 3e 20 3c 74 74 3e 69 66 3c 2f 74 74 3e /tt> <tt>if</tt>
6fd0: 20 61 6e 64 20 61 70 70 6c 69 63 61 74 69 6f 6e and application
6fe0: 20 63 61 73 65 73 2c 20 74 68 65 20 76 61 6c 75 cases, the valu
6ff0: 65 20 6f 66 0a 3c 74 74 3e 45 78 70 72 3c 2f 74 e of.<tt>Expr</t
7000: 74 3e 27 73 20 3c 74 74 3e 65 6e 76 3c 2f 74 74 t>'s <tt>env</tt
7010: 3e 20 61 72 67 75 6d 65 6e 74 20 64 6f 65 73 20 > argument does
7020: 6e 6f 74 20 63 68 61 6e 67 65 2c 20 77 68 69 63 not change, whic
7030: 68 20 69 73 20 67 6f 6f 64 2c 0a 73 69 6e 63 65 h is good,.since
7040: 20 6e 6f 74 68 69 6e 67 20 6e 65 65 64 73 20 74 nothing needs t
7050: 6f 20 62 65 20 61 64 64 65 64 20 74 6f 20 74 68 o be added to th
7060: 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 61 74 e environment at
7070: 20 74 68 6f 73 65 20 63 61 6c 6c 20 73 69 74 65 those call site
7080: 73 2e 0a 54 68 65 20 76 61 6c 75 65 20 6f 66 20 s..The value of
7090: 3c 74 74 3e 45 78 70 72 3c 2f 74 74 3e 27 73 20 <tt>Expr</tt>'s
70a0: 3c 74 74 3e 78 3c 2f 74 74 3e 20 61 72 67 75 6d <tt>x</tt> argum
70b0: 65 6e 74 20 64 6f 65 73 20 6e 6f 74 0a 63 68 61 ent does not.cha
70c0: 6e 67 65 20 65 69 74 68 65 72 2c 20 73 6f 20 74 nge either, so t
70d0: 68 65 20 63 6c 61 75 73 65 20 74 68 61 74 20 72 he clause that r
70e0: 65 61 64 73 0a 0a 3c 2f 70 3e 3c 70 3e 0a 0a 3c eads..</p><p>..<
70f0: 2f 70 3e 3c 70 3e 3c 74 74 3e 26 6e 62 73 70 3b /p><p><tt>
7100: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
7110: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
7120: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
7130: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
7140: 70 3b 5b 2c 76 26 6e 62 73 70 3b 28 67 75 61 72 p;[,v (guar
7150: 64 26 6e 62 73 70 3b 28 73 79 6d 62 6f 6c 3f 26 d (symbol?&
7160: 6e 62 73 70 3b 76 29 29 26 6e 62 73 70 3b 76 5d nbsp;v)) v]
7170: 3c 2f 74 74 3e 0a 3c 2f 70 3e 3c 70 3e 73 68 6f </tt>.</p><p>sho
7180: 75 6c 64 20 6e 6f 74 20 62 65 20 72 65 70 6c 61 uld not be repla
7190: 63 65 64 20 62 79 20 6f 6e 65 20 74 68 61 74 20 ced by one that
71a0: 72 65 61 64 73 0a 0a 3c 2f 70 3e 3c 70 3e 0a 0a reads..</p><p>..
71b0: 3c 2f 70 3e 3c 70 3e 3c 74 74 3e 26 6e 62 73 70 </p><p><tt> 
71c0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
71d0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
71e0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
71f0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
7200: 73 70 3b 5b 2c 76 26 6e 62 73 70 3b 28 67 75 61 sp;[,v (gua
7210: 72 64 26 6e 62 73 70 3b 28 73 79 6d 62 6f 6c 3f rd (symbol?
7220: 26 6e 62 73 70 3b 76 29 29 26 6e 62 73 70 3b 78 v)) x
7230: 5d 3c 2f 74 74 3e 0a 3c 2f 70 3e 3c 70 3e 6f 72 ]</tt>.</p><p>or
7240: 20 6e 65 73 74 65 64 20 65 78 70 72 65 73 73 69 nested expressi
7250: 6f 6e 73 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 ons will not be
7260: 68 61 6e 64 6c 65 64 20 70 72 6f 70 65 72 6c 79 handled properly
7270: 2e 0a 49 6e 20 67 65 6e 65 72 61 6c 2c 20 74 68 ..In general, th
7280: 65 20 76 61 6c 75 65 73 20 6f 66 20 61 6e 79 20 e values of any
7290: 76 61 72 69 61 62 6c 65 73 20 62 6f 75 6e 64 20 variables bound
72a0: 6f 75 74 73 69 64 65 20 61 20 3c 74 74 3e 6d 61 outside a <tt>ma
72b0: 74 63 68 3c 2f 74 74 3e 0a 65 78 70 72 65 73 73 tch</tt>.express
72c0: 69 6f 6e 20 64 6f 20 6e 6f 74 20 63 68 61 6e 67 ion do not chang
72d0: 65 20 77 68 65 6e 20 61 20 3c 74 74 3e 63 61 74 e when a <tt>cat
72e0: 61 3c 2f 74 74 3e 20 63 61 6c 6c 20 69 73 20 75 a</tt> call is u
72f0: 73 65 64 20 74 6f 20 72 65 63 75 72 0a 64 69 72 sed to recur.dir
7300: 65 63 74 6c 79 20 74 6f 20 74 68 65 20 3c 74 74 ectly to the <tt
7310: 3e 6d 61 74 63 68 3c 2f 74 74 3e 20 69 74 73 65 >match</tt> itse
7320: 6c 66 2e 0a 0a 3c 2f 70 3e 3c 70 3e 0a 3c 61 20 lf...</p><p>.<a
7330: 6e 61 6d 65 3d 22 6d 72 76 73 22 3e 3c 2f 61 3e name="mrvs"></a>
7340: 49 6e 20 73 6f 6d 65 20 63 61 73 65 73 2c 20 61 In some cases, a
7350: 20 70 72 6f 63 65 64 75 72 65 20 74 68 61 74 20 procedure that
7360: 75 73 65 73 20 3c 74 74 3e 6d 61 74 63 68 3c 2f uses <tt>match</
7370: 74 74 3e 20 77 69 6c 6c 20 6e 65 65 64 20 74 6f tt> will need to
7380: 20 72 65 74 75 72 6e 0a 6d 75 6c 74 69 70 6c 65 return.multiple
7390: 20 76 61 6c 75 65 73 2e 0a 50 72 6f 67 72 61 6d values..Program
73a0: 73 20 72 65 74 75 72 6e 20 6d 75 6c 74 69 70 6c s return multipl
73b0: 65 20 76 61 6c 75 65 73 20 75 73 69 6e 67 20 74 e values using t
73c0: 68 65 20 3c 74 74 3e 76 61 6c 75 65 73 3c 2f 74 he <tt>values</t
73d0: 74 3e 0a 70 72 6f 63 65 64 75 72 65 20 61 6e 64 t>.procedure and
73e0: 20 72 65 63 65 69 76 65 20 74 68 65 6d 20 75 73 receive them us
73f0: 69 6e 67 20 74 68 65 20 3c 74 74 3e 6c 65 74 2d ing the <tt>let-
7400: 76 61 6c 75 65 73 3c 2f 74 74 3e 0a 73 79 6e 74 values</tt>.synt
7410: 61 63 74 69 63 20 66 6f 72 6d 2e 0a 54 68 65 73 actic form..Thes
7420: 65 20 66 65 61 74 75 72 65 73 20 61 72 65 20 64 e features are d
7430: 65 73 63 72 69 62 65 64 20 69 6e 0a 3c 61 20 63 escribed in.<a c
7440: 6c 61 73 73 3d 22 72 65 66 22 20 68 72 65 66 3d lass="ref" href=
7450: 22 68 74 74 70 3a 2f 2f 77 77 77 2e 73 63 68 65 "http://www.sche
7460: 6d 65 2e 63 6f 6d 2f 74 73 70 6c 34 2f 63 6f 6e me.com/tspl4/con
7470: 74 72 6f 6c 2e 68 74 6d 6c 23 53 45 43 54 4d 52 trol.html#SECTMR
7480: 56 53 22 3e 3c 69 3e 54 68 65 0a 53 63 68 65 6d VS"><i>The.Schem
7490: 65 20 50 72 6f 67 72 61 6d 6d 69 6e 67 20 4c 61 e Programming La
74a0: 6e 67 75 61 67 65 3c 2f 69 3e 3c 2f 61 3e 2e 0a nguage</i></a>..
74b0: 48 65 72 65 20 69 73 20 61 20 73 69 6d 70 6c 65 Here is a simple
74c0: 20 65 78 61 6d 70 6c 65 20 61 64 61 70 74 65 64 example adapted
74d0: 20 66 72 6f 6d 20 3c 69 3e 54 68 65 20 53 63 68 from <i>The Sch
74e0: 65 6d 65 20 50 72 6f 67 72 61 6d 6d 69 6e 67 20 eme Programming
74f0: 4c 61 6e 67 75 61 67 65 3c 2f 69 3e 2e 0a 0a 3c Language</i>...<
7500: 2f 70 3e 3c 70 3e 0a 0a 3c 2f 70 3e 3c 70 3e 3c /p><p>..</p><p><
7510: 74 74 3e 28 64 65 66 69 6e 65 26 6e 62 73 70 3b tt>(define
7520: 73 70 6c 69 74 3c 62 72 3e 0a 0a 26 6e 62 73 70 split<br>.. 
7530: 3b 26 6e 62 73 70 3b 28 6c 61 6d 62 64 61 26 6e ; (lambda&n
7540: 62 73 70 3b 28 6c 73 29 3c 62 72 3e 0a 0a 26 6e bsp;(ls)<br>..&n
7550: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
7560: 26 6e 62 73 70 3b 28 69 66 26 6e 62 73 70 3b 28 (if (
7570: 6f 72 26 6e 62 73 70 3b 28 6e 75 6c 6c 3f 26 6e or (null?&n
7580: 62 73 70 3b 6c 73 29 26 6e 62 73 70 3b 28 6e 75 bsp;ls) (nu
7590: 6c 6c 3f 26 6e 62 73 70 3b 28 63 64 72 26 6e 62 ll? (cdr&nb
75a0: 73 70 3b 6c 73 29 29 29 3c 62 72 3e 0a 0a 26 6e sp;ls)))<br>..&n
75b0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
75c0: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
75d0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 76 p; (v
75e0: 61 6c 75 65 73 26 6e 62 73 70 3b 6c 73 26 6e 62 alues ls&nb
75f0: 73 70 3b 27 28 29 29 3c 62 72 3e 0a 0a 26 6e 62 sp;'())<br>..&nb
7600: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
7610: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
7620: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 6c 65 ; (le
7630: 74 2d 76 61 6c 75 65 73 26 6e 62 73 70 3b 28 5b t-values ([
7640: 28 6f 64 64 73 26 6e 62 73 70 3b 65 76 65 6e 73 (odds evens
7650: 29 26 6e 62 73 70 3b 28 73 70 6c 69 74 26 6e 62 ) (split&nb
7660: 73 70 3b 28 63 64 64 72 26 6e 62 73 70 3b 6c 73 sp;(cddr ls
7670: 29 29 5d 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b ))])<br>..
7680: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
7690: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
76a0: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
76b0: 26 6e 62 73 70 3b 28 76 61 6c 75 65 73 26 6e 62 (values&nb
76c0: 73 70 3b 28 63 6f 6e 73 26 6e 62 73 70 3b 28 63 sp;(cons (c
76d0: 61 72 26 6e 62 73 70 3b 6c 73 29 26 6e 62 73 70 ar ls) 
76e0: 3b 6f 64 64 73 29 3c 62 72 3e 0a 0a 26 6e 62 73 ;odds)<br>..&nbs
76f0: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
7700: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
7710: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
7720: 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e p; &n
7730: 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b bsp;
7740: 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 &nbs
7750: 70 3b 26 6e 62 73 70 3b 28 63 6f 6e 73 26 6e 62 p; (cons&nb
7760: 73 70 3b 28 63 61 64 72 26 6e 62 73 70 3b 6c 73 sp;(cadr ls
7770: 29 26 6e 62 73 70 3b 65 76 65 6e 73 29 29 29 29 ) evens))))
7780: 29 29 0a 3c 62 72 3e 0a 3c 62 72 3e 0a 28 73 70 )).<br>.<br>.(sp
7790: 6c 69 74 26 6e 62 73 70 3b 27 28 61 26 6e 62 73 lit '(a&nbs
77a0: 70 3b 62 26 6e 62 73 70 3b 63 26 6e 62 73 70 3b p;b c
77b0: 64 26 6e 62 73 70 3b 65 26 6e 62 73 70 3b 66 29 d e f)
77c0: 29 26 6e 62 73 70 3b 3c 69 6d 67 20 73 72 63 3d ) <img src=
77d0: 22 6d 61 74 63 68 5f 66 69 6c 65 73 2f 30 2e 67 "match_files/0.g
77e0: 69 66 22 20 61 6c 74 3d 22 26 6c 74 3b 67 72 61 if" alt="<gra
77f0: 70 68 69 63 26 67 74 3b 22 3e 26 6e 62 73 70 3b phic>">
7800: 28 61 26 6e 62 73 70 3b 63 26 6e 62 73 70 3b 65 (a c e
7810: 29 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 )<br>.. &nb
7820: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
7830: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
7840: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
7850: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
7860: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
7870: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
7880: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
7890: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
78a0: 3b 3c 69 6d 67 20 73 72 63 3d 22 6d 61 74 63 68 ;<img src="match
78b0: 5f 66 69 6c 65 73 2f 67 68 6f 73 74 52 69 67 68 _files/ghostRigh
78c0: 74 61 72 72 6f 77 2e 67 69 66 22 3e 26 6e 62 73 tarrow.gif">&nbs
78d0: 70 3b 28 62 26 6e 62 73 70 3b 64 26 6e 62 73 70 p;(b d 
78e0: 3b 66 29 3c 2f 74 74 3e 0a 3c 2f 70 3e 3c 70 3e ;f)</tt>.</p><p>
78f0: 54 68 65 20 3c 74 74 3e 76 61 6c 75 65 73 3c 2f The <tt>values</
7900: 74 74 3e 20 70 72 6f 63 65 64 75 72 65 20 69 73 tt> procedure is
7910: 20 75 73 65 64 20 74 6f 20 72 65 74 75 72 6e 20 used to return
7920: 6d 75 6c 74 69 70 6c 65 20 76 61 6c 75 65 73 3b multiple values;
7930: 20 69 74 0a 74 61 6b 65 73 20 61 6e 20 61 72 62 it.takes an arb
7940: 69 74 72 61 72 79 20 6e 75 6d 62 65 72 20 6f 66 itrary number of
7950: 20 61 72 67 75 6d 65 6e 74 73 20 61 6e 64 20 72 arguments and r
7960: 65 74 75 72 6e 73 20 74 68 65 6d 20 61 73 20 74 eturns them as t
7970: 68 65 20 76 61 6c 75 65 73 2e 0a 49 66 20 70 61 he values..If pa
7980: 73 73 65 64 20 6f 6e 65 20 76 61 6c 75 65 2c 20 ssed one value,
7990: 3c 74 74 3e 76 61 6c 75 65 73 3c 2f 74 74 3e 20 <tt>values</tt>
79a0: 62 65 68 61 76 65 73 20 6c 69 6b 65 20 74 68 65 behaves like the
79b0: 20 69 64 65 6e 74 69 74 79 2e 0a 3c 74 74 3e 6c identity..<tt>l
79c0: 65 74 2d 76 61 6c 75 65 73 3c 2f 74 74 3e 20 69 et-values</tt> i
79d0: 73 20 6c 69 6b 65 20 3c 74 74 3e 6c 65 74 3c 2f s like <tt>let</
79e0: 74 74 3e 2c 20 65 78 63 65 70 74 20 74 68 61 74 tt>, except that
79f0: 20 65 61 63 68 20 62 69 6e 64 69 6e 67 20 62 69 each binding bi
7a00: 6e 64 73 0a 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 nds.zero or more
7a10: 20 76 61 72 69 61 62 6c 65 73 20 74 6f 20 7a 65 variables to ze
7a20: 72 6f 20 6f 72 20 6d 6f 72 65 20 72 65 74 75 72 ro or more retur
7a30: 6e 20 76 61 6c 75 65 73 2e 0a 0a 3c 2f 70 3e 3c n values...</p><
7a40: 70 3e 0a 54 68 65 20 70 61 74 74 65 72 6e 20 6d p>.The pattern m
7a50: 61 74 63 68 65 72 20 63 61 74 61 20 73 79 6e 74 atcher cata synt
7a60: 61 78 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 75 ax can also be u
7a70: 73 65 64 20 74 6f 20 72 65 63 65 69 76 65 20 6d sed to receive m
7a80: 75 6c 74 69 70 6c 65 0a 76 61 6c 75 65 73 2e 0a ultiple.values..
7a90: 57 68 65 6e 20 6d 61 6b 69 6e 67 20 69 6d 70 6c When making impl
7aa0: 69 63 69 74 20 72 65 63 75 72 73 69 76 65 20 63 icit recursive c
7ab0: 61 6c 6c 73 20 75 73 69 6e 67 20 74 68 65 20 63 alls using the c
7ac0: 61 74 61 20 28 3c 74 74 3e 2c 5b 5d 3c 2f 74 74 ata (<tt>,[]</tt
7ad0: 3e 29 20 73 79 6e 74 61 78 2c 0a 6f 6e 65 20 63 >) syntax,.one c
7ae0: 61 6e 20 69 6e 63 6c 75 64 65 20 7a 65 72 6f 20 an include zero
7af0: 6f 72 20 6d 6f 72 65 20 76 61 72 69 61 62 6c 65 or more variable
7b00: 73 20 62 65 74 77 65 65 6e 20 74 68 65 20 62 72 s between the br
7b10: 61 63 6b 65 74 73 0a 28 61 66 74 65 72 20 74 68 ackets.(after th
7b20: 65 20 3c 74 74 3e 2d 26 67 74 3b 3c 2f 74 74 3e e <tt>-></tt>
7b30: 2c 20 69 66 20 6f 6e 65 20 69 73 20 70 72 65 73 , if one is pres
7b40: 65 6e 74 29 2c 0a 65 61 63 68 20 72 65 70 72 65 ent),.each repre
7b50: 73 65 6e 74 69 6e 67 20 6f 6e 65 20 6f 66 20 74 senting one of t
7b60: 68 65 20 65 78 70 65 63 74 65 64 20 72 65 74 75 he expected retu
7b70: 72 6e 20 76 61 6c 75 65 73 2e 0a 3c 74 74 3e 73 rn values..<tt>s
7b80: 70 6c 69 74 3c 2f 74 74 3e 20 6d 61 79 20 74 68 plit</tt> may th
7b90: 75 73 20 62 65 20 64 65 66 69 6e 65 64 20 75 73 us be defined us
7ba0: 69 6e 67 20 3c 74 74 3e 6d 61 74 63 68 3c 2f 74 ing <tt>match</t
7bb0: 74 3e 20 61 73 20 66 6f 6c 6c 6f 77 73 2e 0a 0a t> as follows...
7bc0: 3c 2f 70 3e 3c 70 3e 0a 0a 3c 2f 70 3e 3c 70 3e </p><p>..</p><p>
7bd0: 3c 74 74 3e 28 64 65 66 69 6e 65 26 6e 62 73 70 <tt>(define 
7be0: 3b 73 70 6c 69 74 3c 62 72 3e 0a 0a 26 6e 62 73 ;split<br>..&nbs
7bf0: 70 3b 26 6e 62 73 70 3b 28 6c 61 6d 62 64 61 26 p; (lambda&
7c00: 6e 62 73 70 3b 28 6c 73 29 3c 62 72 3e 0a 0a 26 nbsp;(ls)<br>..&
7c10: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
7c20: 3b 26 6e 62 73 70 3b 28 6d 61 74 63 68 26 6e 62 ; (match&nb
7c30: 73 70 3b 6c 73 3c 62 72 3e 0a 0a 26 6e 62 73 70 sp;ls<br>.. 
7c40: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
7c50: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b sp; [
7c60: 28 29 26 6e 62 73 70 3b 28 76 61 6c 75 65 73 26 () (values&
7c70: 6e 62 73 70 3b 27 28 29 26 6e 62 73 70 3b 27 28 nbsp;'() '(
7c80: 29 29 5d 3c 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 ))]<br>.. &
7c90: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
7ca0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b 28 2c ; [(,
7cb0: 78 29 26 6e 62 73 70 3b 28 76 61 6c 75 65 73 26 x) (values&
7cc0: 6e 62 73 70 3b 60 28 2c 78 29 26 6e 62 73 70 3b nbsp;`(,x)
7cd0: 27 28 29 29 5d 3c 62 72 3e 0a 0a 26 6e 62 73 70 '())]<br>.. 
7ce0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
7cf0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 5b sp; [
7d00: 28 2c 78 26 6e 62 73 70 3b 2c 79 26 6e 62 73 70 (,x ,y 
7d10: 3b 2e 26 6e 62 73 70 3b 2c 5b 6f 64 64 73 26 6e ;. ,[odds&n
7d20: 62 73 70 3b 65 76 65 6e 73 5d 29 3c 62 72 3e 0a bsp;evens])<br>.
7d30: 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 . &nb
7d40: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
7d50: 6e 62 73 70 3b 26 6e 62 73 70 3b 28 76 61 6c 75 nbsp; (valu
7d60: 65 73 26 6e 62 73 70 3b 28 63 6f 6e 73 26 6e 62 es (cons&nb
7d70: 73 70 3b 78 26 6e 62 73 70 3b 6f 64 64 73 29 3c sp;x odds)<
7d80: 62 72 3e 0a 0a 26 6e 62 73 70 3b 26 6e 62 73 70 br>..  
7d90: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
7da0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
7db0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
7dc0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
7dd0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 28 sp; (
7de0: 63 6f 6e 73 26 6e 62 73 70 3b 79 26 6e 62 73 70 cons y 
7df0: 3b 65 76 65 6e 73 29 29 5d 29 29 29 0a 3c 62 72 ;evens))]))).<br
7e00: 3e 0a 3c 62 72 3e 0a 28 73 70 6c 69 74 26 6e 62 >.<br>.(split&nb
7e10: 73 70 3b 27 28 61 26 6e 62 73 70 3b 62 26 6e 62 sp;'(a b&nb
7e20: 73 70 3b 63 26 6e 62 73 70 3b 64 26 6e 62 73 70 sp;c d 
7e30: 3b 65 26 6e 62 73 70 3b 66 29 29 26 6e 62 73 70 ;e f)) 
7e40: 3b 3c 69 6d 67 20 73 72 63 3d 22 6d 61 74 63 68 ;<img src="match
7e50: 5f 66 69 6c 65 73 2f 30 2e 67 69 66 22 20 61 6c _files/0.gif" al
7e60: 74 3d 22 26 6c 74 3b 67 72 61 70 68 69 63 26 67 t="<graphic&g
7e70: 74 3b 22 3e 26 6e 62 73 70 3b 28 61 26 6e 62 73 t;"> (a&nbs
7e80: 70 3b 63 26 6e 62 73 70 3b 65 29 3c 62 72 3e 0a p;c e)<br>.
7e90: 0a 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 . &nb
7ea0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
7eb0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
7ec0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
7ed0: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
7ee0: 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 nbsp;  
7ef0: 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 ; &nb
7f00: 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 sp; &
7f10: 6e 62 73 70 3b 26 6e 62 73 70 3b 3c 69 6d 67 20 nbsp; <img
7f20: 73 72 63 3d 22 6d 61 74 63 68 5f 66 69 6c 65 73 src="match_files
7f30: 2f 67 68 6f 73 74 52 69 67 68 74 61 72 72 6f 77 /ghostRightarrow
7f40: 2e 67 69 66 22 3e 26 6e 62 73 70 3b 28 62 26 6e .gif"> (b&n
7f50: 62 73 70 3b 64 26 6e 62 73 70 3b 66 29 3c 2f 74 bsp;d f)</t
7f60: 74 3e 0a 3c 2f 70 3e 3c 70 3e 0a 20 0a 20 0a 3c t>.</p><p>. . .<
7f70: 2f 70 3e 3c 70 3e 3c 2f 70 3e 3c 68 72 3e c2 a9 /p><p></p><hr>..
7f80: 26 6e 62 73 70 3b 32 30 31 33 26 6e 62 73 70 3b 2013
7f90: 52 2e 20 4b 65 6e 74 20 44 79 62 76 69 67 0a 3c R. Kent Dybvig.<
7fa0: 70 3e 0a 0a 3c 2f 70 3e 3c 64 69 76 20 69 64 3d p>..</p><div id=
7fb0: 22 6c 69 6e 6b 36 34 5f 76 64 70 5f 74 61 62 69 "link64_vdp_tabi
7fc0: 64 22 20 73 74 79 6c 65 3d 22 64 69 73 70 6c 61 d" style="displa
7fd0: 79 3a 6e 6f 6e 65 3b 22 3e 31 38 36 35 3c 2f 64 y:none;">1865</d
7fe0: 69 76 3e 3c 2f 62 6f 64 79 3e 3c 64 69 76 20 69 iv></body><div i
7ff0: 64 3d 22 61 62 69 6e 65 46 69 6c 6c 45 6c 65 6d d="abineFillElem
8000: 65 6e 74 22 3e 3c 2f 64 69 76 3e 3c 2f 68 74 6d ent"></div></htm
8010: 6c 3e l>