Hex Artifact Content
Not logged in

Artifact 07bae30af3901ecf2110aab44c2c872a6af62585:


0000: 44 64 6f 63 0a 24 28 44 44 4f 43 5f 41 55 54 48  Ddoc.$(DDOC_AUTH
0010: 4f 52 53 20 6b 2e 69 6e 61 62 61 29 0a 24 28 44  ORS k.inaba).$(D
0020: 44 4f 43 5f 4c 49 43 45 4e 53 45 20 4e 59 53 4c  DOC_LICENSE NYSL
0030: 20 30 2e 39 39 38 32 20 28 68 74 74 70 3a 2f 2f   0.9982 (http://
0040: 77 77 77 2e 6b 6d 6f 6e 6f 73 2e 6e 65 74 2f 6e  www.kmonos.net/n
0050: 79 73 6c 2f 29 29 0a 0a 3c 70 3e 0a e3 81 93 e3  ysl/))..<p>.....
0060: 81 ae e3 83 95 e3 82 a1 e3 82 a4 e3 83 ab e3 81  ................
0070: af e3 80 81 e8 a8 80 e8 aa 9e e4 bb 95 e6 a7 98  ................
0080: e3 81 aa e3 81 a9 e3 81 ae e7 b0 a1 e5 8d 98 e3  ................
0090: 81 aa e8 aa ac e6 98 8e e3 81 a7 e3 81 99 e3 80  ................
00a0: 82 0a 3c 2f 70 3e 0a 3c 70 3e 0a e3 81 82 e3 81  ..</p>.<p>......
00b0: a8 e3 81 a4 e3 81 84 e3 81 a7 e3 81 ab e3 80 81  ................
00c0: e5 b7 a6 e3 81 ae e3 82 b5 e3 82 a4 e3 83 89 e3  ................
00d0: 83 90 e3 83 bc e3 81 ae 20 22 50 61 63 6b 61 67  ........ "Packag
00e0: 65 22 20 e3 82 bf e3 83 96 e3 82 92 e3 82 af e3  e" .............
00f0: 83 aa e3 83 83 e3 82 af e3 81 99 e3 82 8b e3 81  ................
0100: a8 e5 ae 9f e8 a3 85 e3 81 ae e3 82 bd e3 83 bc  ................
0110: e3 82 b9 e3 81 ae e3 83 89 e3 82 ad e3 83 a5 e3  ................
0120: 83 a1 e3 83 b3 e3 83 88 e3 81 8c e8 aa ad e3 82  ................
0130: 81 e3 81 be e3 81 99 e3 80 82 0a 3c 2f 70 3e 0a  ...........</p>.
0140: 0a 24 28 44 44 4f 43 5f 4d 45 4d 42 45 52 53 0a  .$(DDOC_MEMBERS.
0150: 0a 24 28 53 45 43 54 49 4f 4e 20 53 79 6e 74 61  .$(SECTION Synta
0160: 78 2c 20 24 28 53 45 43 42 4f 44 59 0a 3c 70 3e  x, $(SECBODY.<p>
0170: 0a e6 96 87 e6 b3 95 e3 81 ab e3 81 a4 e3 81 84  ................
0180: e3 81 a6 e3 80 82 0a e5 ad 97 e5 8f a5 e8 a7 a3  ................
0190: e6 9e 90 e3 81 8c e3 82 8f e3 82 8a e3 81 a8 e9  ................
01a0: 81 a9 e5 bd 93 e3 81 aa e3 81 ae e3 81 a7 e3 80  ................
01b0: 81 0a e5 a4 89 e6 95 b0 e5 ae a3 e8 a8 80 e3 81  ................
01c0: ae e5 a4 89 e6 95 b0 e5 90 8d e3 81 ae e3 81 a8  ................
01d0: e3 81 93 e3 82 8d e3 81 ab e3 80 81 e6 95 b0 e5  ................
01e0: ad 97 e3 82 92 e5 a4 89 e6 95 b0 e5 90 8d e3 81  ................
01f0: a8 e3 81 97 e3 81 a6 e4 bd bf e3 81 88 e3 81 a6  ................
0200: e5 8f 82 e7 85 a7 e3 81 a7 e3 81 8d e3 81 aa e3  ................
0210: 81 84 e5 a4 89 e6 95 b0 e3 81 8c e4 bd 9c e3 82  ................
0220: 8c e3 81 9f e3 82 8a e3 80 81 0a e4 ba 88 e7 b4  ................
0230: 84 e8 aa 9e e3 81 af e4 ba 88 e7 b4 84 e8 aa 9e  ................
0240: e3 81 a8 e3 81 97 e3 81 a6 e8 a7 a3 e9 87 88 e3  ................
0250: 81 95 e3 82 8c e5 be 97 e3 81 aa e3 81 84 e3 81  ................
0260: a8 e3 81 93 e3 82 8d e3 81 a7 e3 81 af e6 99 ae  ................
0270: e9 80 9a e3 81 ab e5 a4 89 e6 95 b0 e5 90 8d e3  ................
0280: 81 a8 e3 81 97 e3 81 a6 e4 bd bf e3 81 88 e3 81  ................
0290: a1 e3 82 83 e3 81 a3 e3 81 9f e3 82 8a e3 81 97  ................
02a0: e3 81 a6 e3 80 81 0a e5 81 b6 e3 81 ab e3 81 a8  ................
02b0: e3 82 93 e3 81 a7 e3 82 82 e3 81 aa e3 81 84 e8  ................
02c0: a6 8b e3 81 8b e3 81 91 e3 81 ae e3 82 bd e3 83  ................
02d0: bc e3 82 b9 e3 81 8c e6 a7 8b e6 96 87 e8 a7 a3  ................
02e0: e6 9e 90 e9 80 9a e3 82 8a e3 81 be e3 81 99 e3  ................
02f0: 81 8c e3 80 81 e6 b0 97 e3 81 ab e3 81 97 e3 81  ................
0300: aa e3 81 84 e3 81 a7 e9 81 a9 e5 bd 93 e3 81 ab  ................
0310: e4 bd bf e3 81 a3 e3 81 a6 e4 b8 8b e3 81 95 e3  ................
0320: 81 84 e3 80 82 0a 3c 2f 70 3e 0a 0a 24 28 44 44  ......</p>..$(DD
0330: 4f 43 5f 4d 45 4d 42 45 52 53 0a 0a 24 28 53 45  OC_MEMBERS..$(SE
0340: 43 54 49 4f 4e 20 e6 96 87 e5 ad 97 e3 82 b3 e3  CTION ..........
0350: 83 bc e3 83 89 2c 20 24 28 53 45 43 42 4f 44 59  ....., $(SECBODY
0360: 0a 3c 70 3e 0a 55 54 46 2d 38 20 e3 81 ae e3 81  .<p>.UTF-8 .....
0370: bf e5 af be e5 bf 9c e3 81 a7 e3 81 99 e3 80 82  ................
0380: 0a 3c 2f 70 3e 0a 29 29 0a 0a 24 28 53 45 43 54  .</p>.))..$(SECT
0390: 49 4f 4e 20 e3 82 b3 e3 83 a1 e3 83 b3 e3 83 88  ION ............
03a0: 2c 20 24 28 53 45 43 42 4f 44 59 0a 3c 70 3e 0a  , $(SECBODY.<p>.
03b0: e8 a1 8c e3 82 b3 e3 83 a1 e3 83 b3 e3 83 88 e3  ................
03c0: 81 af 20 3c 74 74 3e 23 3c 2f 74 74 3e 20 e3 81  .. <tt>#</tt> ..
03d0: 8b e3 82 89 e6 94 b9 e8 a1 8c e3 81 be e3 81 a7  ................
03e0: e3 81 a7 e3 81 99 e3 80 82 0a 3c 2f 70 3e 0a 3c  ..........</p>.<
03f0: 70 3e 0a e3 83 96 e3 83 ad e3 83 83 e3 82 af e3  p>..............
0400: 82 b3 e3 83 a1 e3 83 b3 e3 83 88 e3 81 af e3 81  ................
0410: 82 e3 82 8a e3 81 be e3 81 9b e3 82 93 e3 80 82  ................
0420: 0a 3c 2f 70 3e 0a 29 29 0a 0a 24 28 53 45 43 54  .</p>.))..$(SECT
0430: 49 4f 4e 20 42 4e 46 2c 20 24 28 53 45 43 42 4f  ION BNF, $(SECBO
0440: 44 59 0a 3c 70 72 65 3e 0a 20 49 44 20 20 20 20  DY.<pre>. ID    
0450: 3a 3a 3d 20 e9 81 a9 e5 bd 93 e3 81 ab e8 ad 98  ::= ............
0460: e5 88 a5 e5 ad 90 e3 81 a3 e3 81 bd e3 81 84 e6  ................
0470: 96 87 e5 ad 97 e5 88 97 0a 20 4c 41 59 45 52 20  ......... LAYER 
0480: 3a 3a 3d 20 22 40 22 20 49 44 0a 0a 20 45 20 3a  ::= "@" ID.. E :
0490: 3a 3d 0a 20 20 20 24 28 44 5f 43 4f 4d 4d 45 4e  :=.   $(D_COMMEN
04a0: 54 20 23 20 e5 a4 89 e6 95 b0 e5 ae a3 e8 a8 80  T # ............
04b0: 29 0a 20 20 20 20 20 7c 20 28 22 76 61 72 22 7c  ).     | ("var"|
04c0: 22 6c 65 74 22 7c 22 64 65 66 22 7c 4c 41 59 45  "let"|"def"|LAYE
04d0: 52 29 20 49 44 20 22 3d 22 20 45 20 28 22 3b 22  R) ID "=" E (";"
04e0: 7c 22 69 6e 22 29 20 45 0a 20 20 20 20 20 7c 20  |"in") E.     | 
04f0: 28 22 76 61 72 22 7c 22 6c 65 74 22 7c 22 64 65  ("var"|"let"|"de
0500: 66 22 7c 4c 41 59 45 52 29 20 49 44 20 22 28 22  f"|LAYER) ID "("
0510: 20 50 41 52 41 4d 53 20 22 29 22 20 22 7b 22 20   PARAMS ")" "{" 
0520: 45 20 22 7d 22 20 28 22 3b 22 7c 22 69 6e 22 29  E "}" (";"|"in")
0530: 20 45 0a 20 20 20 20 20 7c 20 28 22 76 61 72 22   E.     | ("var"
0540: 7c 22 6c 65 74 22 7c 22 64 65 66 22 7c 4c 41 59  |"let"|"def"|LAY
0550: 45 52 29 20 49 44 20 22 3d 22 20 45 0a 20 20 20  ER) ID "=" E.   
0560: 20 20 7c 20 28 22 76 61 72 22 7c 22 6c 65 74 22    | ("var"|"let"
0570: 7c 22 64 65 66 22 7c 4c 41 59 45 52 29 20 49 44  |"def"|LAYER) ID
0580: 20 22 28 22 20 50 41 52 41 4d 53 20 22 29 22 20   "(" PARAMS ")" 
0590: 22 7b 22 20 45 20 22 7d 22 0a 0a 20 20 20 24 28  "{" E "}"..   $(
05a0: 44 5f 43 4f 4d 4d 45 4e 54 20 23 20 e3 83 aa e3  D_COMMENT # ....
05b0: 83 86 e3 83 a9 e3 83 ab 29 0a 20 20 20 20 20 7c  ........).     |
05c0: 20 49 4e 54 45 47 45 52 20 20 20 20 20 20 20 20   INTEGER        
05d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
05e0: 24 28 44 5f 43 4f 4d 4d 45 4e 54 20 23 20 e9 9d  $(D_COMMENT # ..
05f0: 9e e8 b2 a0 e6 95 b4 e6 95 b0 29 0a 20 20 20 20  ..........).    
0600: 20 7c 20 53 54 52 49 4e 47 20 20 20 20 20 20 20   | STRING       
0610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0620: 20 20 24 28 44 5f 43 4f 4d 4d 45 4e 54 20 23 20    $(D_COMMENT # 
0630: 22 22 20 e3 81 a7 e3 81 8f e3 81 8f e3 81 a3 e3  "" .............
0640: 81 9f e6 96 87 e5 ad 97 e5 88 97 e3 80 82 5c 22  ..............\"
0650: 20 e3 81 a8 20 5c 5c 20 e3 81 af e4 bd bf e3 81   ... \\ ........
0660: 88 e3 82 8b 29 0a 20 20 20 20 20 7c 20 22 7b 22  ....).     | "{"
0670: 20 45 4e 54 52 59 53 20 22 7d 22 20 20 20 20 20   ENTRYS "}"     
0680: 20 20 20 20 20 20 20 20 20 20 20 20 24 28 44 5f              $(D_
0690: 43 4f 4d 4d 45 4e 54 20 23 20 e3 83 86 e3 83 bc  COMMENT # ......
06a0: e3 83 96 e3 83 ab 29 0a 20 20 20 20 20 7c 20 22  ......).     | "
06b0: 66 75 6e 22 20 22 28 22 20 50 41 52 41 4d 53 20  fun" "(" PARAMS 
06c0: 22 29 22 20 22 7b 22 20 45 20 22 7d 22 20 24 28  ")" "{" E "}" $(
06d0: 44 5f 43 4f 4d 4d 45 4e 54 20 23 20 e7 84 a1 e5  D_COMMENT # ....
06e0: 90 8d e9 96 a2 e6 95 b0 29 0a 20 20 20 20 20 7c  ........).     |
06f0: 20 20 22 ce bb 22 20 22 28 22 20 50 41 52 41 4d    ".." "(" PARAM
0700: 53 20 22 29 22 20 22 7b 22 20 45 20 22 7d 22 20  S ")" "{" E "}" 
0710: 24 28 44 5f 43 4f 4d 4d 45 4e 54 20 23 20 e7 84  $(D_COMMENT # ..
0720: a1 e5 90 8d e9 96 a2 e6 95 b0 29 0a 0a 20 20 20  ..........)..   
0730: 24 28 44 5f 43 4f 4d 4d 45 4e 54 20 23 20 e9 96  $(D_COMMENT # ..
0740: a2 e6 95 b0 e5 91 bc e3 81 b3 e5 87 ba e3 81 97  ................
0750: 29 0a 20 20 20 20 20 7c 20 45 20 22 28 22 20 41  ).     | E "(" A
0760: 52 47 53 22 29 22 0a 0a 20 20 20 20 20 20 20 20  RGS")"..        
0770: 20 77 68 65 72 65 20 20 20 20 41 52 47 53 20 3a   where    ARGS :
0780: 3a 3d 20 45 20 22 2c 22 20 2e 2e 2e 20 22 2c 22  := E "," ... ","
0790: 20 45 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   E.             
07a0: 20 20 20 50 41 52 41 4d 53 20 3a 3a 3d 20 28 49     PARAMS ::= (I
07b0: 44 7c 4c 41 59 45 52 29 2b 20 22 2c 22 20 2e 2e  D|LAYER)+ "," ..
07c0: 2e 20 22 2c 22 20 28 49 44 7c 4c 41 59 45 52 29  . "," (ID|LAYER)
07d0: 2b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  +.              
07e0: 20 20 45 4e 54 52 59 53 20 3a 3a 3d 20 49 44 20    ENTRYS ::= ID 
07f0: 22 3a 22 20 45 20 20 20 20 22 2c 22 20 2e 2e 2e  ":" E    "," ...
0800: 20 22 2c 22 20 49 44 20 22 3a 22 20 45 0a 0a 20   "," ID ":" E.. 
0810: 20 20 24 28 44 5f 43 4f 4d 4d 45 4e 54 20 23 20    $(D_COMMENT # 
0820: e6 bc 94 e7 ae 97 e5 ad 90 e3 81 aa e3 81 a9 29  ...............)
0830: 0a 20 20 20 20 20 7c 20 22 28 22 20 45 20 22 29  .     | "(" E ")
0840: 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  "               
0850: 20 20 24 28 44 5f 43 4f 4d 4d 45 4e 54 20 23 20    $(D_COMMENT # 
0860: e3 81 9f e3 81 a0 e3 81 ae e6 8b ac e5 bc a7 29  ...............)
0870: 0a 20 20 20 20 20 7c 20 45 20 42 49 4e 4f 50 20  .     | E BINOP 
0880: 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  E               
0890: 20 20 24 28 44 5f 43 4f 4d 4d 45 4e 54 20 23 20    $(D_COMMENT # 
08a0: e4 ba 8c e9 a0 85 e6 bc 94 e7 ae 97 e5 ad 90 e3  ................
08b0: 81 84 e3 82 8d e3 81 84 e3 82 8d 29 0a 20 20 20  ...........).   
08c0: 20 20 7c 20 45 20 22 2e 22 20 20 49 44 20 20 20    | E "."  ID   
08d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 28                $(
08e0: 44 5f 43 4f 4d 4d 45 4e 54 20 23 20 e3 83 86 e3  D_COMMENT # ....
08f0: 83 bc e3 83 96 e3 83 ab e3 81 ae e3 83 95 e3 82  ................
0900: a3 e3 83 bc e3 83 ab e3 83 89 e3 82 a2 e3 82 af  ................
0910: e3 82 bb e3 82 b9 29 0a 20 20 20 20 20 7c 20 45  ......).     | E
0920: 20 22 2e 3f 22 20 49 44 20 20 20 20 20 20 20 20   ".?" ID        
0930: 20 20 20 20 20 20 20 20 20 24 28 44 5f 43 4f 4d           $(D_COM
0940: 4d 45 4e 54 20 23 20 e3 83 86 e3 83 bc e3 83 96  MENT # .........
0950: e3 83 ab e3 81 ab e3 83 95 e3 82 a3 e3 83 bc e3  ................
0960: 83 ab e3 83 89 e3 81 8c e3 81 82 e3 82 8b e3 81  ................
0970: 8b e5 90 a6 e3 81 8b 29 0a 20 20 20 20 20 7c 20  .......).     | 
0980: 45 20 22 7b 22 20 45 4e 54 52 59 53 20 22 7d 22  E "{" ENTRYS "}"
0990: 20 20 20 20 20 20 20 20 20 20 24 28 44 5f 43 4f            $(D_CO
09a0: 4d 4d 45 4e 54 20 23 20 e3 83 86 e3 83 bc e3 83  MMENT # ........
09b0: 96 e3 83 ab e6 8b a1 e5 bc b5 29 0a 20 20 20 20  ..........).    
09c0: 20 7c 20 22 69 66 22 20 22 28 22 20 45 20 22 29   | "if" "(" E ")
09d0: 22 20 22 7b 22 20 45 20 22 7d 22 0a 20 20 20 20  " "{" E "}".    
09e0: 20 7c 20 22 69 66 22 20 22 28 22 20 45 20 22 29   | "if" "(" E ")
09f0: 22 20 22 7b 22 20 45 20 22 7d 22 20 22 65 6c 73  " "{" E "}" "els
0a00: 65 20 22 7b 22 20 45 20 22 7d 22 0a 0a 20 20 20  e "{" E "}"..   
0a10: 24 28 44 5f 43 4f 4d 4d 45 4e 54 20 23 20 e3 83  $(D_COMMENT # ..
0a20: 91 e3 82 bf e3 83 bc e3 83 b3 e3 83 9e e3 83 83  ................
0a30: e3 83 81 29 0a 20 20 20 20 20 7c 20 22 63 61 73  ...).     | "cas
0a40: 65 22 20 22 28 22 20 45 20 22 29 22 20 28 22 77  e" "(" E ")" ("w
0a50: 68 65 6e 22 20 22 28 22 20 50 41 54 54 45 52 4e  hen" "(" PATTERN
0a60: 20 22 29 22 20 22 7b 22 20 45 20 22 7d 22 29 2a   ")" "{" E "}")*
0a70: 20 0a 0a 20 20 20 20 20 20 20 20 20 77 68 65 72   ..         wher
0a80: 65 20 50 41 54 54 45 52 4e 20 3a 3a 3d 20 e5 bc  e PATTERN ::= ..
0a90: 8f e3 81 8c e3 81 a0 e3 81 84 e3 81 9f e3 81 84  ................
0aa0: e3 81 aa e3 82 93 e3 81 a7 e3 82 82 e6 9b b8 e3  ................
0ab0: 81 91 e3 82 8b e6 b0 97 e3 81 8c e3 81 99 e3 82  ................
0ac0: 8b 0a 0a 20 20 20 24 28 44 5f 43 4f 4d 4d 45 4e  ...   $(D_COMMEN
0ad0: 54 20 23 20 e3 83 ac e3 82 a4 e3 83 a4 e6 8c 87  T # ............
0ae0: e5 ae 9a e5 ae 9f e8 a1 8c 29 0a 20 20 20 20 20  .........).     
0af0: 7c 20 4c 41 59 45 52 20 22 28 22 20 45 20 22 29  | LAYER "(" E ")
0b00: 22 0a 3c 2f 70 72 65 3e 0a 29 29 0a 0a 24 28 53  ".</pre>.))..$(S
0b10: 45 43 54 49 4f 4e 20 e7 b3 96 e8 a1 a3 e6 a7 8b  ECTION .........
0b20: e6 96 87 2c 20 24 28 53 45 43 42 4f 44 59 0a 3c  ..., $(SECBODY.<
0b30: 70 3e 0a e6 bc 94 e7 ae 97 e5 ad 90 e3 81 a8 e3  p>..............
0b40: 81 84 e3 81 86 e3 82 82 e3 81 ae e3 81 af e3 81  ................
0b50: 82 e3 82 8a e3 81 be e3 81 9b e3 82 93 e3 80 82  ................
0b60: e5 86 85 e9 83 a8 e7 9a 84 e3 81 ab e3 81 af e5  ................
0b70: 85 a8 e3 81 a6 e9 96 a2 e6 95 b0 e5 91 bc e3 81  ................
0b80: b3 e5 87 ba e3 81 97 e6 a7 8b e6 96 87 e3 81 ab  ................
0b90: e6 9b b8 e3 81 8d e6 8f 9b e3 81 88 e3 82 89 e3  ................
0ba0: 82 8c e3 81 a6 e3 81 84 e3 81 be e3 81 99 e3 80  ................
0bb0: 82 3c 74 74 3e 69 66 3c 2f 74 74 3e 20 e3 82 82  .<tt>if</tt> ...
0bc0: e3 81 a7 e3 81 99 e3 80 82 0a 3c 62 72 2f 3e 0a  ..........<br/>.
0bd0: e3 83 91 e3 82 bf e3 83 bc e3 83 b3 e3 83 9e e3  ................
0be0: 83 83 e3 83 81 e3 82 82 e5 85 a8 e9 83 a8 20 3c  .............. <
0bf0: 74 74 3e 69 66 3c 2f 74 74 3e 20 e3 81 a8 20 3c  tt>if</tt> ... <
0c00: 74 74 3e 3d 3d 3c 2f 74 74 3e 20 e3 81 a8 20 3c  tt>==</tt> ... <
0c10: 74 74 3e 26 61 6d 70 3b 26 61 6d 70 3b 3c 2f 74  tt>&amp;&amp;</t
0c20: 74 3e 20 e3 81 a8 0a 3c 74 74 3e 2e 3c 2f 74 74  t> ....<tt>.</tt
0c30: 3e 20 e3 81 a8 20 3c 74 74 3e 2e 3f 3c 2f 74 74  > ... <tt>.?</tt
0c40: 3e 20 e3 82 92 e4 bd bf e3 81 a3 e3 81 9f e9 96  > ..............
0c50: a2 e6 95 b0 e5 91 bc e3 81 b3 e5 87 ba e3 81 97  ................
0c60: e5 bc 8f e3 81 ab e6 9b b8 e3 81 8d e6 8f 9b e3  ................
0c70: 81 88 e3 82 89 e3 82 8c e3 81 a6 e3 81 84 e3 81  ................
0c80: be e3 81 99 e3 81 8c e3 80 81 0a e8 a6 8f e5 89  ................
0c90: 87 e3 81 ae e8 a9 b3 e7 b4 b0 e3 82 92 e8 aa ac  ................
0ca0: e6 98 8e e3 81 99 e3 82 8b e3 81 ae e3 81 8c e9  ................
0cb0: 9d a2 e5 80 92 e3 81 aa e3 81 ae e3 81 a7 e9 81  ................
0cc0: a9 e5 bd 93 e3 81 ab e6 83 b3 e5 83 8f e3 81 97  ................
0cd0: e3 81 a6 e4 b8 8b e3 81 95 e3 81 84 e3 80 82 0a  ................
0ce0: e4 bb 96 e3 81 ae e6 9b b8 e3 81 8d e6 8f 9b e3  ................
0cf0: 81 88 e3 81 af e3 81 93 e3 82 93 e3 81 aa e6 84  ................
0d00: 9f e3 81 98 e3 81 a7 e3 81 99 e3 80 82 0a 3c 2f  ..............</
0d10: 70 3e 0a 3c 70 72 65 3e 0a 20 20 20 20 69 66 20  p>.<pre>.    if 
0d20: 28 45 29 20 7b 45 7d 20 20 20 20 20 20 20 20 20  (E) {E}         
0d30: 20 e2 87 92 20 69 66 28 20 45 2c 20 66 75 6e 28   ... if( E, fun(
0d40: 29 7b 45 7d 2c 20 66 75 6e 28 29 7b 7d 20 29 0a  ){E}, fun(){} ).
0d50: 20 20 20 20 69 66 20 28 45 29 20 7b 45 7d 20 65      if (E) {E} e
0d60: 6c 73 65 20 7b 45 7d 20 e2 87 92 20 69 66 28 20  lse {E} ... if( 
0d70: 45 2c 20 66 75 6e 28 29 7b 45 7d 2c 20 66 75 6e  E, fun(){E}, fun
0d80: 28 29 7b 45 7d 20 29 0a 20 20 20 20 45 20 42 49  (){E} ).    E BI
0d90: 4e 4f 50 20 45 20 20 20 20 20 20 20 20 20 20 20  NOP E           
0da0: e2 87 92 20 42 49 4e 4f 50 28 45 2c 20 45 29 0a  ... BINOP(E, E).
0db0: 20 20 20 20 7b 20 45 4e 54 52 49 45 53 20 7d 20      { ENTRIES } 
0dc0: 20 20 20 20 20 20 20 20 e2 87 92 20 7b 7d 7b 20          ... {}{ 
0dd0: 45 4e 54 52 49 45 53 20 7d 0a 20 20 20 20 7b 7d  ENTRIES }.    {}
0de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0df0: 20 20 e2 87 92 20 7b 7d 28 29 0a 20 20 20 20 45    ... {}().    E
0e00: 20 7b 49 44 3a 45 2c 20 2e 2e 2e 7d 20 20 20 20   {ID:E, ...}    
0e10: 20 20 20 e2 87 92 20 2e 3d 28 45 2c 20 49 44 2c     ... .=(E, ID,
0e20: 20 45 29 20 7b 20 2e 2e 2e 20 7d 0a 3c 2f 70 72   E) { ... }.</pr
0e30: 65 3e 0a 3c 70 3e 0a e5 a4 89 e6 95 b0 e5 ae a3  e>.<p>..........
0e40: e8 a8 80 e3 81 ab e8 89 b2 e3 80 85 e3 81 82 e3  ................
0e50: 82 8a e3 81 be e3 81 99 e3 81 8c e3 80 81 3c 74  ..............<t
0e60: 74 3e 6c 65 74 3c 2f 74 74 3e 20 e3 81 a8 20 3c  t>let</tt> ... <
0e70: 74 74 3e 76 61 72 3c 2f 74 74 3e 20 e3 81 a8 20  tt>var</tt> ... 
0e80: 3c 74 74 3e 64 65 66 3c 2f 74 74 3e 20 e3 81 af  <tt>def</tt> ...
0e90: e5 90 8c e3 81 98 e6 89 b1 e3 81 84 e3 81 a7 e3  ................
0ea0: 80 81 0a 3c 74 74 3e 69 6e 3c 2f 74 74 3e 20 e3  ...<tt>in</tt> .
0eb0: 81 a8 20 3c 74 74 3e 3b 3c 2f 74 74 3e 20 e3 81  .. <tt>;</tt> ..
0ec0: af e5 90 8c e3 81 98 e6 89 b1 e3 81 84 e3 81 a7  ................
0ed0: e3 81 99 e3 80 82 e3 81 a4 e3 81 be e3 82 8a 0a  ................
0ee0: 3c 2f 70 3e 0a 3c 70 72 65 3e 0a 20 20 20 6c 65  </p>.<pre>.   le
0ef0: 74 20 78 20 3d 20 45 20 69 6e 20 45 0a 20 20 20  t x = E in E.   
0f00: 76 61 72 20 78 20 3d 20 45 20 69 6e 20 45 0a 20  var x = E in E. 
0f10: 20 20 64 65 66 20 78 20 3d 20 45 20 69 6e 20 45    def x = E in E
0f20: 0a 20 20 20 6c 65 74 20 78 20 3d 20 45 20 3b 20  .   let x = E ; 
0f30: 45 0a 20 20 20 76 61 72 20 78 20 3d 20 45 20 3b  E.   var x = E ;
0f40: 20 45 0a 20 20 20 64 65 66 20 78 20 3d 20 45 20   E.   def x = E 
0f50: 3b 20 45 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a e4  ; E.</pre>.<p>..
0f60: bb a5 e4 b8 8a e3 81 ae e3 81 a9 e3 82 8c e3 82  ................
0f70: 82 e5 90 8c e3 81 98 e6 84 8f e5 91 b3 e3 81 aa  ................
0f80: e3 81 ae e3 81 a7 e3 80 81 e3 81 aa e3 82 93 e3  ................
0f90: 81 a8 e3 81 aa e3 81 8f e9 96 a2 e6 95 b0 e5 9e  ................
0fa0: 8b e3 81 a3 e3 81 bd e3 81 8f e6 9b b8 e3 81 8d  ................
0fb0: e3 81 9f e3 81 84 e6 b0 97 e5 88 86 e3 81 ae e6  ................
0fc0: 97 a5 e3 81 af 20 3c 74 74 3e 6c 65 74 20 69 6e  ..... <tt>let in
0fd0: 3c 2f 74 74 3e 20 e3 82 92 e3 80 81 0a e6 89 8b  </tt> ..........
0fe0: e7 b6 9a e3 81 8d e5 9e 8b e3 81 a3 e3 81 bd e3  ................
0ff0: 81 8f e6 9b b8 e3 81 8d e3 81 9f e3 81 84 e6 b0  ................
1000: 97 e5 88 86 e3 81 ae e6 97 a5 e3 81 af 20 3c 74  ............. <t
1010: 74 3e 76 61 72 20 3b 3c 2f 74 74 3e 20 e3 82 92  t>var ;</tt> ...
1020: e4 bd bf e3 81 86 e3 81 a8 e3 82 88 e3 81 84 e3  ................
1030: 81 a7 e3 81 97 e3 82 87 e3 81 86 e3 80 82 0a 3c  ...............<
1040: 2f 70 3e 0a 3c 70 3e 0a e9 96 a2 e6 95 b0 e3 82  /p>.<p>.........
1050: 92 e5 ae a3 e8 a8 80 e3 81 99 e3 82 8b e3 81 a8  ................
1060: e3 81 8d e3 81 af e3 80 81 3c 74 74 3e 66 75 6e  .........<tt>fun
1070: 3c 2f 74 74 3e 20 e3 82 84 20 3c 74 74 3e ce bb  </tt> ... <tt>..
1080: 3c 2f 74 74 3e 20 e3 82 92 e7 9c 81 e7 95 a5 e3  </tt> ..........
1090: 81 a7 e3 81 8d e3 81 be e3 81 99 e3 80 82 0a e4  ................
10a0: bb a5 e4 b8 8b e3 81 ae e6 9b b8 e3 81 8d e6 8f  ................
10b0: 9b e3 81 88 e3 81 8c e8 a1 8c e3 82 8f e3 82 8c  ................
10c0: e3 81 be e3 81 99 e3 80 82 0a 3c 2f 70 3e 0a 3c  ..........</p>.<
10d0: 70 72 65 3e 0a 20 20 20 64 65 66 20 66 28 20 41  pre>.   def f( A
10e0: 52 47 53 20 29 20 7b 20 45 20 7d 3b 20 45 20 20  RGS ) { E }; E  
10f0: 20 e2 87 92 20 20 20 64 65 66 20 66 20 3d 20 66   ...   def f = f
1100: 75 6e 28 41 52 47 53 29 7b 45 7d 3b 20 45 0a 3c  un(ARGS){E}; E.<
1110: 2f 70 72 65 3e 0a 3c 70 3e 0a e4 bb 96 e3 81 ab  /pre>.<p>.......
1120: e3 80 81 e3 82 82 e3 81 a3 e3 81 a8 e6 89 8b e7  ................
1130: b6 9a e3 81 8d e5 9e 8b e3 81 a3 e3 81 bd e3 81  ................
1140: 8f e3 81 9f e3 82 81 e3 81 ae e6 9b b8 e3 81 8d  ................
1150: e6 8f 9b e3 81 88 e8 89 b2 e3 80 85 0a 3c 2f 70  .............</p
1160: 3e 0a 3c 70 72 65 3e 0a 20 20 20 66 75 6e 20 28  >.<pre>.   fun (
1170: 29 20 7b 20 45 3b 20 45 3b 20 45 20 20 20 20 20  ) { E; E; E     
1180: 20 7d 20 20 20 e2 87 92 20 20 20 66 75 6e 20 28   }   ...   fun (
1190: 29 20 7b 20 6c 65 74 20 5f 20 3d 20 45 20 69 6e  ) { let _ = E in
11a0: 20 6c 65 74 20 5f 20 3d 20 45 20 69 6e 20 45 20   let _ = E in E 
11b0: 7d 0a 20 20 20 66 75 6e 20 28 29 20 7b 20 76 61  }.   fun () { va
11c0: 72 20 78 20 3d 20 31 30 30 20 20 7d 20 20 20 e2  r x = 100  }   .
11d0: 87 92 20 20 20 66 75 6e 20 28 29 20 7b 20 76 61  ..   fun () { va
11e0: 72 20 78 20 3d 20 31 30 30 3b 20 78 20 7d 0a 20  r x = 100; x }. 
11f0: 20 20 66 75 6e 20 28 29 20 7b 20 76 61 72 20 78    fun () { var x
1200: 20 3d 20 31 30 30 3b 20 7d 20 20 20 e2 87 92 20   = 100; }   ... 
1210: 20 20 66 75 6e 20 28 29 20 7b 20 76 61 72 20 78    fun () { var x
1220: 20 3d 20 31 30 30 3b 20 78 20 7d 0a 20 20 20 66   = 100; x }.   f
1230: 75 6e 20 28 29 20 7b 20 7d 20 20 20 20 20 20 20  un () { }       
1240: 20 20 20 20 20 20 20 20 20 e2 87 92 20 20 20 66           ...   f
1250: 75 6e 20 28 29 20 7b 20 22 28 65 6d 70 74 79 20  un () { "(empty 
1260: 66 75 6e 63 74 69 6f 6e 20 62 6f 64 79 29 22 20  function body)" 
1270: 7d 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a e4 b8 ad  }.</pre>.<p>....
1280: e8 ba ab e3 81 8c e7 a9 ba e3 81 ae e9 96 a2 e6  ................
1290: 95 b0 e3 81 ab e4 bd 95 e3 82 92 e8 bf 94 e3 81  ................
12a0: 95 e3 81 9b e3 82 8b e3 81 8b e3 81 af e9 81 a9  ................
12b0: e5 bd 93 e3 81 a7 e3 81 99 e3 80 82 e4 bb 8a e3  ................
12c0: 81 af e3 81 a8 e3 82 8a e3 81 82 e3 81 88 e3 81  ................
12d0: 9a e9 81 a9 e5 bd 93 e3 81 ab e6 96 87 e5 ad 97  ................
12e0: e5 88 97 e8 bf 94 e3 81 97 e3 81 a6 e3 81 be e3  ................
12f0: 81 99 e3 80 82 0a 3c 2f 70 3e 0a 29 29 0a 0a 24  ......</p>.))..$
1300: 28 53 45 43 54 49 4f 4e 20 e5 a4 89 e6 95 b0 e3  (SECTION .......
1310: 81 ae e3 82 b9 e3 82 b3 e3 83 bc e3 83 97 e8 a6  ................
1320: 8f e5 89 87 2c 20 24 28 53 45 43 42 4f 44 59 0a  ...., $(SECBODY.
1330: 3c 70 3e 0a e5 9f ba e6 9c ac e7 9a 84 e3 81 ab  <p>.............
1340: e3 81 af e3 80 81 6c 65 74 20 e3 81 ab e3 82 88  ......let ......
1350: e3 81 a3 e3 81 a6 e5 b8 b8 e8 ad 98 e7 9a 84 e3  ................
1360: 81 aa e6 84 9f e3 81 98 e3 81 ab e5 a4 89 e6 95  ................
1370: b0 e3 81 ae e3 82 b9 e3 82 b3 e3 83 bc e3 83 97  ................
1380: e3 81 8c e3 83 8d e3 82 b9 e3 83 88 e3 81 97 e3  ................
1390: 81 be e3 81 99 e3 80 82 0a 3c 2f 70 3e 0a 3c 70  .........</p>.<p
13a0: 72 65 3e 0a 20 20 20 6c 65 74 20 78 3d 32 31 20  re>.   let x=21 
13b0: 69 6e 20 6c 65 74 20 78 3d 78 2b 78 20 69 6e 20  in let x=x+x in 
13c0: 78 20 20 20 20 24 28 44 5f 43 4f 4d 4d 45 4e 54  x    $(D_COMMENT
13d0: 20 23 20 34 32 29 0a 3c 2f 70 72 65 3e 0a 3c 70   # 42).</pre>.<p
13e0: 3e 0a e4 b8 80 e6 96 b9 e3 81 a7 e3 80 81 22 6c  >............."l
13f0: 65 74 20 72 65 63 22 20 e3 81 ae e3 82 88 e3 81  et rec" ........
1400: 86 e3 81 aa e7 89 b9 e5 88 a5 e3 81 aa e6 a7 8b  ................
1410: e6 96 87 e3 81 af e3 81 82 e3 82 8a e3 81 be e3  ................
1420: 81 9b e3 82 93 e3 81 8c e3 80 81 0a 3c 2f 70 3e  ............</p>
1430: 0a 3c 70 72 65 3e 0a 20 20 20 6c 65 74 20 66 20  .<pre>.   let f 
1440: 3d 20 66 75 6e 28 78 29 20 7b 20 69 66 28 78 3d  = fun(x) { if(x=
1450: 3d 30 29 7b 31 7d 65 6c 73 65 7b 78 2a 66 28 78  =0){1}else{x*f(x
1460: 2d 31 29 7d 20 7d 20 69 6e 20 66 28 31 30 29 20  -1)} } in f(10) 
1470: 20 24 28 44 5f 43 4f 4d 4d 45 4e 54 20 23 20 33   $(D_COMMENT # 3
1480: 36 32 38 38 30 30 29 0a 3c 2f 70 72 65 3e 0a 3c  628800).</pre>.<
1490: 70 3e 0a e5 86 8d e5 b8 b0 e7 9a 84 e3 81 aa e9  p>..............
14a0: 96 a2 e6 95 b0 e5 ae 9a e7 be a9 e3 81 aa e3 81  ................
14b0: a9 e3 82 82 e3 80 81 e3 81 8a e3 81 9d e3 82 89  ................
14c0: e3 81 8f e6 84 8f e5 9b b3 e3 81 95 e3 82 8c e3  ................
14d0: 81 9f e3 81 a8 e3 81 8a e3 82 8a e3 81 ab e5 8b  ................
14e0: 95 e3 81 8d e3 81 be e3 81 99 e3 80 82 0a e5 86  ................
14f0: 85 e9 83 a8 e3 81 ae e8 a9 b3 e7 b4 b0 e3 81 af  ................
1500: e3 80 81 e8 ab b8 e8 88 ac e3 81 ae e4 ba 8b e6  ................
1510: 83 85 e3 81 ab e3 82 88 e3 82 8a e3 80 81 0a e3  ................
1520: 83 9e e3 82 b8 e3 82 ab e3 83 ab e3 81 a7 e7 a0  ................
1530: b4 e5 a3 8a e7 9a 84 e3 81 aa e3 82 b9 e3 82 b3  ................
1540: e3 83 bc e3 83 97 e8 a6 8f e5 89 87 e3 81 ab e3  ................
1550: 81 aa e3 81 a3 e3 81 a6 e3 81 84 e3 82 8b e3 81  ................
1560: ae e3 81 a7 e3 81 99 e3 81 8c e3 80 81 0a e5 90  ................
1570: 8c e5 90 8d e3 81 ae e5 a4 89 e6 95 b0 e3 82 92  ................
1580: e6 bf 80 e3 81 97 e3 81 8f e9 87 8d e3 81 ad e3  ................
1590: 81 a6 e4 bd bf e3 81 a3 e3 81 9f e3 82 8a e3 81  ................
15a0: 97 e3 81 aa e3 81 91 e3 82 8c e3 81 b0 e3 80 81  ................
15b0: 0a e3 81 a0 e3 81 84 e3 81 9f e3 81 84 e8 87 aa  ................
15c0: e7 84 b6 e3 81 aa e5 8b 95 e3 81 8d e3 82 92 e3  ................
15d0: 81 99 e3 82 8b e3 81 a8 e6 80 9d e3 81 84 e3 81  ................
15e0: be e3 81 99 e3 80 81 e3 81 9f e3 81 b6 e3 82 93  ................
15f0: e3 80 81 e3 81 af e3 81 84 e3 80 82 0a 3c 2f 70  .............</p
1600: 3e 0a 3c 70 3e 0a e3 81 b2 e3 81 a8 e3 81 a4 e3  >.<p>...........
1610: 81 a0 e3 81 91 e4 b8 8d e5 8f af e6 80 9d e8 ad  ................
1620: b0 e3 81 aa e5 8b 95 e3 81 8d e3 82 92 e3 81 99  ................
1630: e3 82 8b e3 81 ae e3 81 af e3 80 81 e4 bb a5 e4  ................
1640: b8 8b e3 81 ae e3 82 b1 e3 83 bc e3 82 b9 e3 81  ................
1650: a7 e3 81 99 e3 80 82 0a 3c 2f 70 3e 0a 3c 70 72  ........</p>.<pr
1660: 65 3e 0a 20 20 20 6c 65 74 20 78 20 3d 20 31 20  e>.   let x = 1 
1670: 69 6e 0a 20 20 20 6c 65 74 20 66 20 3d 20 66 75  in.   let f = fu
1680: 6e 28 29 20 7b 78 7d 20 69 6e 0a 20 20 20 6c 65  n() {x} in.   le
1690: 74 20 78 20 3d 20 32 20 69 6e 0a 20 20 20 20 20  t x = 2 in.     
16a0: 20 66 28 29 20 20 20 20 24 28 44 5f 43 4f 4d 4d   f()    $(D_COMM
16b0: 45 4e 54 20 23 20 32 21 21 29 0a 3c 2f 70 72 65  ENT # 2!!).</pre
16c0: 3e 0a 3c 70 3e 0a 6c 65 74 2d 69 6e 20 e3 82 92  >.<p>.let-in ...
16d0: e7 b8 a6 e3 81 ab e3 83 81 e3 82 a7 e3 82 a4 e3  ................
16e0: 83 b3 e3 81 97 e3 81 9f e3 81 a8 e3 81 8d e3 81  ................
16f0: a0 e3 81 91 e3 80 81 e5 90 8c e5 90 8d e5 a4 89  ................
1700: e6 95 b0 e3 82 92 e7 a0 b4 e5 a3 8a e7 9a 84 e3  ................
1710: 81 ab e4 b8 8a e6 9b b8 e3 81 8d e3 81 97 e3 81  ................
1720: be e3 81 99 0a ef bc 88 e5 86 8d e5 b8 b0 e9 96  ................
1730: a2 e6 95 b0 e3 81 ae e5 ae 9a e7 be a9 e3 81 8c  ................
1740: 22 e3 81 86 e3 81 be e3 81 8f 22 e3 81 84 e3 81  ".........".....
1750: a3 e3 81 a6 e3 81 84 e3 82 8b e3 81 ae e3 81 af  ................
1760: e3 81 93 e3 81 ae e4 b8 8a e6 9b b8 e3 81 8d e3  ................
1770: 81 ae e3 81 9f e3 82 81 e3 81 a7 e3 81 99 ef bc  ................
1780: 89 e3 80 82 0a e3 81 aa e3 82 93 e3 81 a7 e3 81  ................
1790: 93 e3 82 93 e3 81 aa e3 81 93 e3 81 a8 e3 81 ab  ................
17a0: e3 81 aa e3 81 a3 e3 81 a6 e3 81 84 e3 82 8b e3  ................
17b0: 81 8b e3 81 a8 e3 81 84 e3 81 86 e3 81 a8 e3 80  ................
17c0: 81 0a e5 be 8c e3 81 a7 e8 aa ac e6 98 8e e3 81  ................
17d0: 99 e3 82 8b e3 80 8c e3 83 ac e3 82 a4 e3 83 a4  ................
17e0: e3 80 8d e3 82 92 e4 bd bf e3 81 a3 e3 81 9f e3  ................
17f0: 81 a8 e3 81 8d e3 81 ab 0a 3c 74 74 3e 6c 65 74  .........<tt>let
1800: 20 66 6f 6f 20 3d 20 2e 2e 2e 20 69 6e 20 40 6c   foo = ... in @l
1810: 61 79 20 66 6f 6f 20 3d 20 2e 2e 2e 20 69 6e 20  ay foo = ... in 
1820: 2e 2e 2e 3c 2f 74 74 3e 0a e3 81 a7 e4 bb 96 e3  ...</tt>........
1830: 83 ac e3 82 a4 e3 83 a4 e3 81 ab e9 87 8d e3 81  ................
1840: ad e6 9b b8 e3 81 8d e3 81 99 e3 82 8b e3 81 9f  ................
1850: e3 82 81 e3 81 a7 e3 81 82 e3 82 8a e3 81 be e3  ................
1860: 81 99 e3 80 82 0a 3c 2f 70 3e 0a 29 29 0a 29 0a  ......</p>.)).).
1870: 29 29 0a 0a 0a 0a 0a 24 28 53 45 43 54 49 4f 4e  )).....$(SECTION
1880: 20 42 61 73 69 63 20 46 65 61 74 75 72 65 73 2c   Basic Features,
1890: 20 24 28 53 45 43 42 4f 44 59 0a 3c 70 3e 0a e7   $(SECBODY.<p>..
18a0: 89 b9 e3 81 ab e7 89 b9 e5 be b4 e7 9a 84 e3 81  ................
18b0: a7 e3 82 82 e3 81 aa e3 81 84 e9 83 a8 e5 88 86  ................
18c0: e3 82 92 e7 b0 a1 e5 8d 98 e3 81 ab e3 81 be e3  ................
18d0: 81 a8 e3 82 81 e3 80 82 0a 3c 2f 70 3e 0a 3c 75  .........</p>.<u
18e0: 6c 3e 0a 20 20 3c 6c 69 3e e9 9d 99 e7 9a 84 e5  l>.  <li>.......
18f0: 9e 8b e3 82 b7 e3 82 b9 e3 83 86 e3 83 a0 e3 81  ................
1900: af e3 81 82 e3 82 8a e3 81 be e3 81 9b e3 82 93  ................
1910: e3 80 82 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e 22  ...</li>.  <li>"
1920: e3 81 bb e3 81 bc 22 20 e7 b4 94 e7 b2 8b e9 96  ......" ........
1930: a2 e6 95 b0 e5 9e 8b e8 a8 80 e8 aa 9e e3 81 a7  ................
1940: e3 81 99 e3 80 82 e5 a4 89 e6 95 b0 e3 82 84 e3  ................
1950: 83 86 e3 83 bc e3 83 96 e3 83 ab e3 81 ae e3 83  ................
1960: 95 e3 82 a3 e3 83 bc e3 83 ab e3 83 89 e3 81 ae  ................
1970: e7 a0 b4 e5 a3 8a e7 9a 84 e3 81 aa e6 9b b8 e3  ................
1980: 81 8d e6 8f 9b e3 81 88 e3 81 af e3 81 a7 e3 81  ................
1990: 8d e3 81 be e3 81 9b e3 82 93 e3 80 82 3c 62 72  .............<br
19a0: 2f 3e 0a 20 20 20 20 20 20 e3 81 9f e3 81 a0 e3  />.      .......
19b0: 81 97 e3 80 81 e7 b5 84 e3 81 bf e8 be bc e3 81  ................
19c0: bf e9 96 a2 e6 95 b0 ef bc 88 3c 74 74 3e 70 72  ..........<tt>pr
19d0: 69 6e 74 3c 2f 74 74 3e ef bc 89 e3 81 a8 e3 80  int</tt>........
19e0: 81 e5 a4 89 e6 95 b0 e3 81 ae e3 82 b9 e3 82 b3  ................
19f0: e3 83 bc e3 83 97 e8 a6 8f e5 89 87 e3 81 ae e3  ................
1a00: 83 9e e3 82 b8 e3 82 ab e3 83 ab e3 81 aa e7 89  ................
1a10: 87 e9 9a 85 e3 81 ab e5 89 af e4 bd 9c e7 94 a8  ................
1a20: e3 81 8c e3 81 82 e3 82 8a e3 81 be e3 81 99 e3  ................
1a30: 80 82 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 3c 70  ..</li>.</ul>.<p
1a40: 3e 0a e9 9d 99 e7 9a 84 e5 9e 8b e3 82 b7 e3 82  >...............
1a50: b9 e3 83 86 e3 83 a0 e3 81 8c e3 81 aa e3 81 84  ................
1a60: e3 81 ae e3 81 af e6 84 8f e5 9b b3 e7 9a 84 e3  ................
1a70: 81 a7 e3 81 99 e3 81 8c e3 80 81 e7 a0 b4 e5 a3  ................
1a80: 8a e7 9a 84 e4 bb a3 e5 85 a5 e3 81 8c e3 81 aa  ................
1a90: e3 81 84 e3 81 ae e3 81 af e3 80 81 e5 8d 98 e3  ................
1aa0: 81 ab e5 ae 9f e8 a3 85 e3 81 8c e3 82 81 e3 82  ................
1ab0: 93 e3 81 a9 e3 81 8b e3 81 a3 e3 81 9f e3 81 a0  ................
1ac0: e3 81 91 e3 81 aa e3 81 ae e3 81 a7 e3 80 81 0a  ................
1ad0: e4 bb 8a e5 be 8c e4 bd 95 e3 81 8b e5 a2 97 e3  ................
1ae0: 81 88 e3 82 8b e3 81 8b e3 82 82 e3 81 97 e3 82  ................
1af0: 8c e3 81 be e3 81 9b e3 82 93 e3 80 82 e5 a2 97  ................
1b00: e3 81 88 e3 81 aa e3 81 84 e3 81 8b e3 82 82 e3  ................
1b10: 81 97 e3 82 8c e3 81 be e3 81 9b e3 82 93 e3 80  ................
1b20: 82 0a 3c 2f 70 3e 0a 24 28 44 44 4f 43 5f 4d 45  ..</p>.$(DDOC_ME
1b30: 4d 42 45 52 53 0a 24 28 53 45 43 54 49 4f 4e 20  MBERS.$(SECTION 
1b40: e3 83 87 e3 83 bc e3 82 bf e5 9e 8b 2c 20 24 28  ............, $(
1b50: 53 45 43 42 4f 44 59 0a 3c 70 3e 0a e4 bb a5 e4  SECBODY.<p>.....
1b60: b8 8b e3 81 ae e3 83 87 e3 83 bc e3 82 bf e5 9e  ................
1b70: 8b e3 81 8c e3 81 82 e3 82 8a e3 81 be e3 81 99  ................
1b80: e3 80 82 0a 3c 2f 70 3e 0a 3c 75 6c 3e 0a 20 20  ....</p>.<ul>.  
1b90: 3c 6c 69 3e e6 95 b4 e6 95 b0 3a 20 20 20 20 20  <li>......:     
1ba0: 3c 74 74 3e 30 3c 2f 74 74 3e 2c 20 3c 74 74 3e  <tt>0</tt>, <tt>
1bb0: 31 32 33 3c 2f 74 74 3e 2c 20 3c 74 74 3e 34 35  123</tt>, <tt>45
1bc0: 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36  6666666666666666
1bd0: 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36  6666666666666666
1be0: 36 36 36 36 36 37 38 39 3c 2f 74 74 3e 2c 20 2e  66666789</tt>, .
1bf0: 2e 2e 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e e6 96  ..</li>.  <li>..
1c00: 87 e5 ad 97 e5 88 97 3a 20 20 20 3c 74 74 3e 22  .......:   <tt>"
1c10: 68 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 22 3c 2f  hello, world!"</
1c20: 74 74 3e 2c 20 2e 2e 2e 3c 2f 6c 69 3e 0a 20 20  tt>, ...</li>.  
1c30: 3c 6c 69 3e e9 96 a2 e6 95 b0 3a 20 20 20 20 20  <li>......:     
1c40: 3c 74 74 3e 66 75 6e 28 78 29 7b 78 2b 31 7d 3c  <tt>fun(x){x+1}<
1c50: 2f 74 74 3e 3c 2f 6c 69 3e 0a 20 20 3c 6c 69 3e  /tt></li>.  <li>
1c60: e3 83 86 e3 83 bc e3 83 96 e3 83 ab 3a 20 3c 74  ............: <t
1c70: 74 3e 7b 63 61 72 3a 20 31 2c 20 63 64 72 3a 20  t>{car: 1, cdr: 
1c80: 7b 63 61 72 3a 20 32 2c 20 63 64 72 3a 20 7b 7d  {car: 2, cdr: {}
1c90: 7d 7d 3c 2f 74 74 3e 3c 2f 6c 69 3e 0a 20 20 3c  }}</tt></li>.  <
1ca0: 6c 69 3e e6 9c aa e5 ae 9a e7 be a9 e5 80 a4 3a  li>............:
1cb0: 20 28 e3 83 86 e3 83 bc e3 83 96 e3 83 ab e3 81   (..............
1cc0: ae e3 80 81 e5 ad 98 e5 9c a8 e3 81 97 e3 81 aa  ................
1cd0: e3 81 84 e3 83 95 e3 82 a3 e3 83 bc e3 83 ab e3  ................
1ce0: 83 89 e3 81 ab e3 82 a2 e3 82 af e3 82 bb e3 82  ................
1cf0: b9 e3 81 97 e3 81 9f e3 82 8a e3 81 99 e3 82 8b  ................
1d00: e3 81 a8 e4 bd 9c e3 82 8c e3 81 be e3 81 99 29  ...............)
1d10: 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 3c 70 3e 0a  </li>.</ul>.<p>.
1d20: e9 96 a2 e6 95 b0 e3 81 af e3 81 84 e3 82 8f e3  ................
1d30: 82 86 e3 82 8b e3 80 8c e3 82 af e3 83 ad e3 83  ................
1d40: bc e3 82 b8 e3 83 a3 e3 80 8d e3 81 a7 e3 81 99  ................
1d50: e3 80 82 e9 9d 99 e7 9a 84 e3 82 b9 e3 82 b3 e3  ................
1d60: 83 bc e3 83 97 e3 81 a7 e5 a4 96 e5 81 b4 e3 81  ................
1d70: ae e7 92 b0 e5 a2 83 e3 81 ab e3 82 a2 e3 82 af  ................
1d80: e3 82 bb e3 82 b9 e3 81 a7 e3 81 8d e3 81 be e3  ................
1d90: 81 99 e3 80 82 0a e3 83 86 e3 83 bc e3 83 96 e3  ................
1da0: 83 ab e3 81 af e3 81 84 e3 82 8f e3 82 86 e3 82  ................
1db0: 8b e3 83 97 e3 83 ad e3 83 88 e3 82 bf e3 82 a4  ................
1dc0: e3 83 97 e3 83 81 e3 82 a7 e3 83 bc e3 83 b3 e3  ................
1dd0: 82 92 e6 8c 81 e3 81 a3 e3 81 a6 e3 81 84 e3 81  ................
1de0: a6 e3 80 81 0a e8 87 aa e5 88 86 e3 81 ab e3 81  ................
1df0: aa e3 81 84 e3 83 95 e3 82 a3 e3 83 bc e3 83 ab  ................
1e00: e3 83 89 e3 81 ae e5 a0 b4 e5 90 88 e3 81 af e8  ................
1e10: a6 aa e3 81 ab e5 95 8f e3 81 84 e5 90 88 e3 82  ................
1e20: 8f e3 81 9b e3 81 8c e8 a1 8c e3 81 8f e6 84 9f  ................
1e30: e3 81 98 e3 81 ab e3 81 aa e3 81 a3 e3 81 a6 e3  ................
1e40: 81 84 e3 81 be e3 81 99 e3 81 8c e3 80 81 0a e3  ................
1e50: 83 95 e3 82 a3 e3 83 bc e3 83 ab e3 83 89 e3 81  ................
1e60: ae e6 9b b8 e3 81 8d e6 8f 9b e3 81 88 e3 81 8c  ................
1e70: e3 81 aa e3 81 84 e3 81 ae e3 81 a7 e3 80 81 e3  ................
1e80: 81 93 e3 82 8c e3 81 af e7 89 b9 e3 81 ab e6 84  ................
1e90: 8f e5 91 b3 e3 81 aa e3 81 84 e3 81 8b e3 82 82  ................
1ea0: e3 81 97 e3 82 8c e3 81 aa e3 81 84 e2 80 a6 e3  ................
1eb0: 80 82 0a 3c 2f 70 3e 0a 29 29 0a 24 28 53 45 43  ...</p>.)).$(SEC
1ec0: 54 49 4f 4e 20 e3 83 91 e3 82 bf e3 83 bc e3 83  TION ...........
1ed0: b3 e3 83 9e e3 83 83 e3 83 81 2c 20 24 28 53 45  .........., $(SE
1ee0: 43 42 4f 44 59 0a 3c 70 3e 0a e9 81 a9 e5 bd 93  CBODY.<p>.......
1ef0: e3 81 ab e5 ae 9f e8 a3 85 e3 81 95 e3 82 8c e3  ................
1f00: 81 9f e3 83 91 e3 82 bf e3 83 bc e3 83 b3 e3 83  ................
1f10: 9e e3 83 83 e3 83 81 e3 81 8c e3 81 82 e3 82 8a  ................
1f20: e3 81 be e3 81 99 e3 80 82 0a e3 83 aa e3 82 b9  ................
1f30: e3 83 88 e3 81 ae 20 32 6e 20 e7 95 aa e7 9b ae  ...... 2n ......
1f40: e3 81 a8 20 32 6e 2b 31 20 e7 95 aa e7 9b ae e3  ... 2n+1 .......
1f50: 82 92 e8 b6 b3 e3 81 97 e3 81 a6 e9 95 b7 e3 81  ................
1f60: 95 e3 82 92 e5 8d 8a e5 88 86 e3 81 ab e3 81 99  ................
1f70: e3 82 8b e9 96 a2 e6 95 b0 ef bc 9a 0a 3c 2f 70  .............</p
1f80: 3e 0a 3c 70 72 65 3e 0a 20 20 20 20 64 65 66 20  >.<pre>.    def 
1f90: 61 64 6a 53 75 6d 28 6c 73 74 29 0a 20 20 20 20  adjSum(lst).    
1fa0: 7b 0a 20 20 20 20 20 20 63 61 73 65 28 20 6c 73  {.      case( ls
1fb0: 74 20 29 0a 20 20 20 20 20 20 20 20 77 68 65 6e  t ).        when
1fc0: 28 20 7b 63 61 72 3a 78 2c 20 63 64 72 3a 7b 63  ( {car:x, cdr:{c
1fd0: 61 72 3a 20 79 2c 20 63 64 72 3a 7a 7d 7d 20 29  ar: y, cdr:z}} )
1fe0: 20 7b 20 7b 63 61 72 3a 20 78 2b 79 2c 20 63 64   { {car: x+y, cd
1ff0: 72 3a 20 61 64 6a 53 75 6d 28 7a 29 7d 20 7d 0a  r: adjSum(z)} }.
2000: 20 20 20 20 20 20 20 20 77 68 65 6e 28 20 7b 63          when( {c
2010: 61 72 3a 78 2c 20 63 64 72 3a 7b 7d 7d 20 29 20  ar:x, cdr:{}} ) 
2020: 7b 20 6c 73 74 20 7d 0a 20 20 20 20 20 20 20 20  { lst }.        
2030: 77 68 65 6e 28 20 7b 7d 20 29 20 7b 20 7b 7d 20  when( {} ) { {} 
2040: 7d 0a 20 20 20 20 7d 0a 3c 2f 70 72 65 3e 0a 3c  }.    }.</pre>.<
2050: 70 3e 0a e5 8b 95 e3 81 8b e3 81 99 e3 81 a8 e3  p>..............
2060: 81 8d e3 81 ab e3 81 af e3 80 81 e5 87 a6 e7 90  ................
2070: 86 e7 b3 bb e3 81 8c e3 81 9d e3 82 8c e3 81 a3  ................
2080: e3 81 bd e3 81 84 20 69 66 2d 74 68 65 6e 2d 65  ...... if-then-e
2090: 6c 73 65 20 e3 81 ab e5 b1 95 e9 96 8b e3 81 97  lse ............
20a0: e3 81 a6 e3 81 84 e3 81 be e3 81 99 e3 80 82 0a  ................
20b0: 3c 74 74 3e 77 68 65 6e 3c 2f 74 74 3e 20 e3 82  <tt>when</tt> ..
20c0: 92 e4 b8 8a e3 81 8b e3 82 89 e8 a9 a6 e3 81 97  ................
20d0: e3 81 a6 e3 81 84 e3 81 a3 e3 81 a6 e3 80 81 e6  ................
20e0: 9c 80 e5 88 9d e3 81 ab e3 83 9e e3 83 83 e3 83  ................
20f0: 81 e3 81 97 e3 81 9f e3 81 a8 e3 81 93 e3 82 8d  ................
2100: e3 82 92 e5 ae 9f e8 a1 8c e3 81 97 e3 81 be e3  ................
2110: 81 99 e3 80 82 0a 3c 2f 70 3e 0a 3c 70 72 65 3e  ......</p>.<pre>
2120: 0a 20 20 20 50 41 54 20 3a 3a 3d 20 22 5f 22 20  .   PAT ::= "_" 
2130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2150: 20 20 20 20 20 24 28 44 5f 43 4f 4d 4d 45 4e 54       $(D_COMMENT
2160: 20 23 20 e3 83 af e3 82 a4 e3 83 ab e3 83 89 e3   # .............
2170: 82 ab e3 83 bc e3 83 89 29 0a 20 20 20 20 20 20  ........).      
2180: 20 20 20 7c 20 49 44 20 20 20 20 20 20 20 20 20     | ID         
2190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 28                $(
21b0: 44 5f 43 4f 4d 4d 45 4e 54 20 23 20 e5 a4 89 e6  D_COMMENT # ....
21c0: 95 b0 e3 83 91 e3 82 bf e3 83 bc e3 83 b3 29 0a  ..............).
21d0: 20 20 20 20 20 20 20 20 20 7c 20 22 7b 22 20 49           | "{" I
21e0: 44 20 22 3a 22 20 50 41 54 20 22 2c 22 20 2e 2e  D ":" PAT "," ..
21f0: 2e 20 22 2c 22 20 49 44 20 3a 20 50 41 54 20 22  . "," ID : PAT "
2200: 7d 22 20 20 24 28 44 5f 43 4f 4d 4d 45 4e 54 20  }"  $(D_COMMENT 
2210: 23 20 e3 83 86 e3 83 bc e3 83 96 e3 83 ab e3 83  # ..............
2220: 91 e3 82 bf e3 83 bc e3 83 b3 29 0a 20 20 20 20  ..........).    
2230: 20 20 20 20 20 7c 20 45 20 20 20 20 20 20 20 20       | E        
2240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2260: 24 28 44 5f 43 4f 4d 4d 45 4e 54 20 23 20 e5 80  $(D_COMMENT # ..
2270: a4 e3 83 91 e3 82 bf e3 83 bc e3 83 b3 29 0a 3c  .............).<
2280: 2f 70 72 65 3e 0a 3c 70 3e 0a e5 a4 89 e6 95 b0  /pre>.<p>.......
2290: e3 83 91 e3 82 bf e3 83 bc e3 83 b3 e3 81 af e5  ................
22a0: b8 b8 e3 81 ab e3 83 9e e3 83 83 e3 83 81 e3 81  ................
22b0: 97 e3 81 a6 e3 80 81 e5 80 a4 e3 82 92 e3 81 9d  ................
22c0: e3 81 ae e5 a4 89 e6 95 b0 e3 81 ab e6 9d 9f e7  ................
22d0: b8 9b e3 81 97 e3 81 be e3 81 99 e3 80 82 0a e3  ................
22e0: 83 af e3 82 a4 e3 83 ab e3 83 89 e3 82 ab e3 83  ................
22f0: bc e3 83 89 e3 82 82 e5 b8 b8 e3 81 ab e3 83 9e  ................
2300: e3 83 83 e3 83 81 e3 81 97 e3 81 be e3 81 99 e3  ................
2310: 81 8c e3 80 81 e5 a4 89 e6 95 b0 e6 9d 9f e7 b8  ................
2320: 9b e3 81 97 e3 81 be e3 81 9b e3 82 93 e3 80 82  ................
2330: 0a e5 80 a4 e3 83 91 e3 82 bf e3 83 bc e3 83 b3  ................
2340: e3 81 af e3 80 81 e4 bb bb e6 84 8f e3 81 ae e5  ................
2350: bc 8f e3 81 8c e6 9b b8 e3 81 91 e3 81 be e3 81  ................
2360: 99 e3 80 82 e3 81 9d e3 81 ae e5 bc 8f e3 82 92  ................
2370: e8 a9 95 e4 be a1 e3 81 97 e3 81 9f e7 b5 90 e6  ................
2380: 9e 9c e3 81 a8 20 3c 74 74 3e 3d 3d 3c 2f 74 74  ..... <tt>==</tt
2390: 3e 20 e3 81 aa e3 82 89 e3 83 9e e3 83 83 e3 83  > ..............
23a0: 81 e3 81 97 e3 81 be e3 81 99 e3 80 82 0a e5 a4  ................
23b0: 96 e3 81 a7 e6 9d 9f e7 b8 9b e3 81 95 e3 82 8c  ................
23c0: e3 81 9f e5 a4 89 e6 95 b0 e3 82 92 e5 80 a4 e3  ................
23d0: 83 91 e3 82 bf e3 83 bc e3 83 b3 e3 81 a8 e3 81  ................
23e0: 97 e3 81 a6 e9 85 8d e7 bd ae e3 80 81 e3 81 af  ................
23f0: e7 9b b4 e6 8e a5 e3 81 af e3 81 a7 e3 81 8d e3  ................
2400: 81 aa e3 81 84 e3 81 ae e3 81 a7 0a 3c 2f 70 3e  ............</p>
2410: 0a 3c 70 72 65 3e 0a 20 20 20 76 61 72 20 78 20  .<pre>.   var x 
2420: 3d 20 31 32 33 3b 0a 20 20 20 63 61 73 65 28 20  = 123;.   case( 
2430: 66 6f 6f 20 29 0a 20 20 20 20 20 77 68 65 6e 28  foo ).     when(
2440: 20 7b 76 61 6c 3a 20 78 2b 30 7d 20 29 20 7b 20   {val: x+0} ) { 
2450: 2e 2e 2e 20 7d 20 24 28 44 5f 43 4f 4d 4d 45 4e  ... } $(D_COMMEN
2460: 54 20 23 20 e3 81 93 e3 82 8c e3 81 af e4 bb bb  T # ............
2470: e6 84 8f e3 81 ae 20 7b 76 61 6c 3a 31 32 33 7d  ...... {val:123}
2480: 20 e3 81 a8 e5 90 8c e3 81 98 29 0a 20 20 20 20   .........).    
2490: 20 77 68 65 6e 28 20 7b 76 61 6c 3a 20 78 7d 20   when( {val: x} 
24a0: 29 20 7b 20 2e 2e 2e 20 7d 20 20 20 24 28 44 5f  ) { ... }   $(D_
24b0: 43 4f 4d 4d 45 4e 54 20 23 20 e3 81 93 e3 82 8c  COMMENT # ......
24c0: e3 81 af e4 bb bb e6 84 8f e3 81 ae 20 66 6f 6f  ............ foo
24d0: 2e 3f 76 61 6c 20 e3 81 aa e3 82 89 e5 b8 b8 e3  .?val ..........
24e0: 81 ab e3 83 9e e3 83 83 e3 83 81 29 0a 3c 2f 70  ...........).</p
24f0: 72 65 3e 0a 3c 70 3e 0a e9 81 a9 e5 bd 93 e3 81  re>.<p>.........
2500: ab e3 81 a1 e3 82 87 e3 81 a3 e3 81 a8 e8 a4 87  ................
2510: e9 9b 91 e3 81 aa e5 bc 8f e3 81 ab e3 81 97 e3  ................
2520: 81 a6 e3 82 84 e3 82 8b e3 81 a8 e3 82 88 e3 81  ................
2530: 84 e3 81 8b e3 82 82 ef bc 88 e8 a3 8f e6 8a 80  ................
2540: ef bc 89 e3 80 82 0a 3c 2f 70 3e 0a 3c 70 3e 0a  .......</p>.<p>.
2550: e3 83 86 e3 83 bc e3 83 96 e3 83 ab e3 83 91 e3  ................
2560: 82 bf e3 83 bc e3 83 b3 e3 81 af e3 80 81 e6 9b  ................
2570: b8 e3 81 8b e3 82 8c e3 81 9f e3 82 ad e3 83 bc  ................
2580: e3 81 8c e5 85 a8 e3 81 a6 e3 81 82 e3 82 8c e3  ................
2590: 81 b0 e3 83 9e e3 83 83 e3 83 81 e3 81 97 e3 81  ................
25a0: be e3 81 99 e3 80 82 0a 3c 74 74 3e 7b 61 3a 20  ........<tt>{a: 
25b0: 5f 7d 3c 2f 74 74 3e 20 e3 81 af e3 80 81 3c 74  _}</tt> ......<t
25c0: 74 3e 2e 61 3c 2f 74 74 3e 20 e3 82 92 e6 8c 81  t>.a</tt> ......
25d0: e3 81 a3 e3 81 a6 e3 81 95 e3 81 88 e3 81 84 e3  ................
25e0: 82 8c e3 81 b0 e3 83 9e e3 83 83 e3 83 81 e3 81  ................
25f0: 99 e3 82 8b e3 81 ae e3 81 a7 e3 80 81 0a 3c 74  ..............<t
2600: 74 3e 7b 61 3a 20 31 32 33 2c 20 62 3a 20 34 35  t>{a: 123, b: 45
2610: 36 7d 3c 2f 74 74 3e 20 e3 81 aa e3 82 93 e3 81  6}</tt> ........
2620: 8b e3 81 ab e3 82 82 e3 83 9e e3 83 83 e3 83 81  ................
2630: e3 81 97 e3 81 be e3 81 99 e3 80 82 0a e3 81 aa  ................
2640: e3 81 ae e3 81 a7 e3 80 81 e3 83 aa e3 82 b9 e3  ................
2650: 83 88 e3 81 ab e5 af be e3 81 99 e3 82 8b e3 83  ................
2660: 91 e3 82 bf e3 83 bc e3 83 b3 e3 82 92 e6 9b b8  ................
2670: e3 81 8f e3 81 a8 e3 81 8d e3 81 ab e3 81 af e3  ................
2680: 80 81 63 61 72 2f 63 64 72 20 e3 81 ae e5 a0 b4  ..car/cdr ......
2690: e5 90 88 e3 82 92 e5 85 88 e3 81 ab e6 9b b8 e3  ................
26a0: 81 8b e3 81 aa e3 81 84 e3 81 a8 0a 3c 74 74 3e  ............<tt>
26b0: 77 68 65 6e 28 7b 7d 29 3c 2f 74 74 3e 20 e3 82  when({})</tt> ..
26c0: 92 e4 b8 8a e3 81 ab e6 9b b8 e3 81 8f e3 81 a8  ................
26d0: e5 85 a8 e9 83 a8 e3 83 9e e3 83 83 e3 83 81 e3  ................
26e0: 81 97 e3 81 a1 e3 82 83 e3 81 84 e3 81 be e3 81  ................
26f0: 99 e3 80 82 e6 b3 a8 e6 84 8f e3 80 82 0a 3c 2f  ..............</
2700: 70 3e 0a 29 29 0a 29 0a 29 29 0a 0a 0a 0a 0a 0a  p>.)).).))......
2710: 24 28 53 45 43 54 49 4f 4e 20 4c 61 79 65 72 73  $(SECTION Layers
2720: 2c 20 24 28 53 45 43 42 4f 44 59 0a 3c 70 72 65  , $(SECBODY.<pre
2730: 3e 0a 5b 4c 61 79 65 72 73 20 3a 3a 20 4f 76 65  >.[Layers :: Ove
2740: 72 76 69 65 77 5d 0a 0a 20 20 50 6f 6c 65 6d 79  rview]..  Polemy
2750: 27 73 20 72 75 6e 74 69 6d 65 20 65 6e 76 69 72  's runtime envir
2760: 6f 6e 6d 65 6e 74 20 68 61 73 20 6d 61 6e 79 20  onment has many 
2770: 22 6c 61 79 65 72 22 73 2e 0a 20 20 55 73 75 61  "layer"s..  Usua
2780: 6c 20 65 78 65 63 75 74 69 6f 6e 20 72 75 6e 20  l execution run 
2790: 69 6e 20 74 68 65 20 40 76 61 6c 75 65 20 6c 61  in the @value la
27a0: 79 65 72 2e 0a 0a 20 20 20 20 3e 3e 20 31 20 2b  yer...    >> 1 +
27b0: 20 32 0a 20 20 20 20 33 0a 20 20 20 20 3e 3e 20   2.    3.    >> 
27c0: 40 76 61 6c 75 65 28 20 31 20 2b 20 32 20 29 0a  @value( 1 + 2 ).
27d0: 20 20 20 20 33 0a 0a 20 20 48 65 72 65 20 79 6f      3..  Here yo
27e0: 75 20 63 61 6e 20 73 65 65 20 74 68 61 74 20 40  u can see that @
27f0: 4c 61 79 65 72 4e 61 6d 65 28 20 45 78 70 72 65  LayerName( Expre
2800: 73 73 69 6f 6e 20 29 20 65 78 65 63 75 74 65 73  ssion ) executes
2810: 20 74 68 65 20 69 6e 6e 65 72 20 45 78 70 72 65   the inner Expre
2820: 73 73 69 6f 6e 20 69 6e 0a 20 20 74 68 65 20 40  ssion in.  the @
2830: 4c 61 79 65 72 4e 61 6d 65 20 6c 61 79 65 72 2e  LayerName layer.
2840: 20 4f 74 68 65 72 20 74 68 61 6e 20 40 76 61 6c   Other than @val
2850: 75 65 2c 20 6f 6e 65 20 6f 74 68 65 72 20 70 72  ue, one other pr
2860: 65 64 65 66 69 6e 65 64 20 6c 61 79 65 72 20 65  edefined layer e
2870: 78 69 73 74 73 3a 20 40 6d 61 63 72 6f 2e 0a 0a  xists: @macro...
2880: 20 20 20 20 3e 3e 20 40 6d 61 63 72 6f 28 20 31      >> @macro( 1
2890: 2b 32 20 29 0a 20 20 20 20 7b 70 6f 73 40 76 61  +2 ).    {pos@va
28a0: 6c 75 65 3a 7b 6c 69 6e 65 6e 6f 40 76 61 6c 75  lue:{lineno@valu
28b0: 65 3a 33 2c 20 63 6f 6c 75 6d 6e 40 76 61 6c 75  e:3, column@valu
28c0: 65 3a 39 2c 20 66 69 6c 65 6e 61 6d 65 40 76 61  e:9, filename@va
28d0: 6c 75 65 3a 3c 52 45 50 4c 3e 7d 2c 0a 20 20 20  lue:<REPL>},.   
28e0: 20 20 20 69 73 40 76 61 6c 75 65 3a 61 70 70 2c     is@value:app,
28f0: 0a 20 20 20 20 61 72 67 73 40 76 61 6c 75 65 3a  .    args@value:
2900: 7b 63 61 72 40 76 61 6c 75 65 3a 7b 70 6f 73 40  {car@value:{pos@
2910: 76 61 6c 75 65 3a 7b 6c 69 6e 65 6e 6f 40 76 61  value:{lineno@va
2920: 6c 75 65 3a 33 2c 20 63 6f 6c 75 6d 6e 40 76 61  lue:3, column@va
2930: 6c 75 65 3a 39 2c 20 66 69 6c 65 6e 61 6d 65 40  lue:9, filename@
2940: 76 61 6c 75 65 3a 3c 52 45 50 4c 3e 7d 2c 0a 20  value:<REPL>},. 
2950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2960: 20 20 20 20 20 20 20 20 20 20 20 69 73 40 76 61             is@va
2970: 6c 75 65 3a 69 6e 74 2c 0a 20 20 20 20 20 20 20  lue:int,.       
2980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2990: 20 20 20 64 61 74 61 40 76 61 6c 75 65 3a 31 7d     data@value:1}
29a0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
29b0: 20 20 63 64 72 40 76 61 6c 75 65 3a 7b 0a 20 20    cdr@value:{.  
29c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29d0: 63 61 72 40 76 61 6c 75 65 3a 7b 70 6f 73 40 76  car@value:{pos@v
29e0: 61 6c 75 65 3a 7b 6c 69 6e 65 6e 6f 40 76 61 6c  alue:{lineno@val
29f0: 75 65 3a 33 2c 20 63 6f 6c 75 6d 6e 40 76 61 6c  ue:3, column@val
2a00: 75 65 3a 31 31 2c 20 66 69 6c 65 6e 61 6d 65 40  ue:11, filename@
2a10: 76 61 6c 75 65 3a 3c 52 45 50 4c 3e 7d 2c 0a 20  value:<REPL>},. 
2a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 40               is@
2a40: 76 61 6c 75 65 3a 69 6e 74 2c 0a 20 20 20 20 20  value:int,.     
2a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a60: 20 20 20 20 20 20 20 64 61 74 61 40 76 61 6c 75         data@valu
2a70: 65 3a 32 7d 2c 0a 20 20 20 20 20 20 20 20 20 20  e:2},.          
2a80: 20 20 20 20 20 20 20 20 63 64 72 40 76 61 6c 75          cdr@valu
2a90: 65 3a 7b 7d 7d 7d 2c 0a 20 20 20 20 20 66 75 6e  e:{}}},.     fun
2aa0: 40 76 61 6c 75 65 3a 7b 70 6f 73 40 76 61 6c 75  @value:{pos@valu
2ab0: 65 3a 7b 6c 69 6e 65 6e 6f 40 76 61 6c 75 65 3a  e:{lineno@value:
2ac0: 33 2c 20 63 6f 6c 75 6d 6e 40 76 61 6c 75 65 3a  3, column@value:
2ad0: 31 30 2c 20 66 69 6c 65 6e 61 6d 65 40 76 61 6c  10, filename@val
2ae0: 75 65 3a 3c 52 45 50 4c 3e 7d 2c 0a 20 20 20 20  ue:<REPL>},.    
2af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 40               is@
2b00: 76 61 6c 75 65 3a 76 61 72 2c 0a 20 20 20 20 20  value:var,.     
2b10: 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 40 76            name@v
2b20: 61 6c 75 65 3a 2b 7d 7d 0a 0a 20 20 28 53 6f 72  alue:+}}..  (Sor
2b30: 72 79 2c 20 74 68 69 73 20 70 72 65 74 74 79 20  ry, this pretty 
2b40: 70 72 69 6e 74 69 6e 67 20 69 73 20 6e 6f 74 20  printing is not 
2b50: 61 76 61 69 6c 61 62 6c 65 20 6f 6e 20 74 68 65  available on the
2b60: 20 61 63 74 75 61 6c 20 69 6e 74 65 72 70 72 65   actual interpre
2b70: 74 65 72 2e 2e 2e 29 0a 20 20 54 68 69 73 20 65  ter...).  This e
2b80: 76 61 6c 75 61 74 65 73 20 74 68 65 20 65 78 70  valuates the exp
2b90: 72 65 73 73 69 6f 6e 20 31 2b 32 20 69 6e 20 74  ression 1+2 in t
2ba0: 68 65 20 40 6d 61 63 72 6f 20 6c 61 79 65 72 2e  he @macro layer.
2bb0: 20 49 6e 20 74 68 69 73 20 6c 61 79 65 72 2c 20   In this layer, 
2bc0: 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66 0a 20  the meaning of. 
2bd0: 20 74 68 65 20 70 72 6f 67 72 61 6d 20 69 73 20   the program is 
2be0: 69 74 73 20 61 62 73 74 72 61 63 74 20 73 79 6e  its abstract syn
2bf0: 74 61 78 20 74 72 65 65 2e 0a 0a 20 20 59 6f 75  tax tree...  You
2c00: 20 63 61 6e 20 69 6e 74 65 72 6c 65 61 76 65 20   can interleave 
2c10: 6c 61 79 65 72 73 2e 0a 20 20 54 68 65 20 72 6f  layers..  The ro
2c20: 6f 74 20 6e 6f 64 65 20 6f 66 20 74 68 65 20 61  ot node of the a
2c30: 62 73 74 72 61 63 74 20 73 79 6e 74 61 78 20 74  bstract syntax t
2c40: 72 65 65 20 69 73 20 66 75 6e 63 74 69 6f 6e 20  ree is function 
2c50: 22 61 70 70 22 6c 69 63 61 74 69 6f 6e 2e 0a 0a  "app"lication...
2c60: 20 20 20 20 3e 3e 20 40 76 61 6c 75 65 28 40 6d      >> @value(@m
2c70: 61 63 72 6f 28 20 31 2b 32 20 29 2e 69 73 29 0a  acro( 1+2 ).is).
2c80: 20 20 20 20 61 70 70 0a 0a 0a 0a 5b 4c 61 79 65      app....[Laye
2c90: 72 73 20 3a 3a 20 44 65 66 69 6e 69 6e 67 20 61  rs :: Defining a
2ca0: 20 6e 65 77 20 6c 61 79 65 72 5d 0a 0a 20 20 54   new layer]..  T
2cb0: 6f 20 64 65 66 69 6e 65 20 61 20 6e 65 77 20 6c  o define a new l
2cc0: 61 79 65 72 2c 20 79 6f 75 20 73 68 6f 75 6c 64  ayer, you should
2cd0: 20 66 69 72 73 74 20 74 65 6c 6c 20 68 6f 77 20   first tell how 
2ce0: 74 6f 20 22 6c 69 66 74 22 20 65 78 69 73 74 69  to "lift" existi
2cf0: 6e 67 20 76 61 6c 75 65 73 20 74 77 6f 20 74 68  ng values two th
2d00: 65 20 6e 65 77 20 6c 61 79 65 72 2e 0a 20 20 4c  e new layer..  L
2d10: 65 74 20 75 73 20 64 65 66 69 6e 65 20 74 68 65  et us define the
2d20: 20 22 40 74 79 70 65 22 20 6c 61 79 65 72 2c 20   "@type" layer, 
2d30: 77 68 65 72 65 20 74 68 65 20 6d 65 61 6e 69 6e  where the meanin
2d40: 67 20 6f 66 20 70 72 6f 67 72 61 6d 73 20 69 73  g of programs is
2d50: 20 74 68 65 69 72 20 73 74 61 74 69 63 20 74 79   their static ty
2d60: 70 65 2e 0a 0a 20 20 20 20 3e 3e 20 40 40 74 79  pe...    >> @@ty
2d70: 70 65 20 3d 20 66 75 6e 28 78 29 20 7b 0a 20 20  pe = fun(x) {.  
2d80: 20 20 3e 3e 20 20 20 69 66 28 20 5f 69 73 69 6e    >>   if( _isin
2d90: 74 28 78 29 20 29 20 7b 20 22 69 6e 74 22 20 7d  t(x) ) { "int" }
2da0: 20 65 6c 73 65 20 7b 0a 20 20 20 20 3e 3e 20 20   else {.    >>  
2db0: 20 69 66 28 20 5f 69 73 66 75 6e 28 78 29 20 29   if( _isfun(x) )
2dc0: 20 7b 20 78 20 7d 20 65 6c 73 65 20 7b 20 22 75   { x } else { "u
2dd0: 6e 6b 6e 6f 77 6e 22 20 7d 20 7d 0a 20 20 20 20  nknown" } }.    
2de0: 3e 3e 20 7d 0a 20 20 20 20 28 4e 6f 74 65 3a 20  >> }.    (Note: 
2df0: 70 6f 6c 65 6d 79 20 52 45 50 4c 20 6d 61 79 20  polemy REPL may 
2e00: 77 61 72 6e 20 73 6f 6d 65 20 65 78 63 65 70 74  warn some except
2e10: 69 6f 6e 20 68 65 72 65 20 62 75 74 20 70 6c 65  ion here but ple
2e20: 61 73 65 20 69 67 6e 6f 72 65 29 0a 0a 20 20 46  ase ignore)..  F
2e30: 6f 72 20 73 69 6d 70 6c 69 63 69 74 79 2c 20 49  or simplicity, I
2e40: 20 68 65 72 65 20 64 65 61 6c 20 6f 6e 6c 79 20   here deal only 
2e50: 77 69 74 68 20 69 6e 74 65 67 65 72 73 2e 0a 20  with integers.. 
2e60: 20 5f 69 73 69 6e 74 20 69 73 20 61 20 70 72 69   _isint is a pri
2e70: 6d 69 74 69 76 65 20 66 75 6e 63 74 69 6f 6e 20  mitive function 
2e80: 6f 66 20 50 6f 6c 65 6d 79 20 74 68 61 74 20 63  of Polemy that c
2e90: 68 65 63 6b 73 20 74 68 65 20 64 79 6e 61 6d 69  hecks the dynami
2ea0: 63 20 74 79 70 65 20 6f 66 20 61 20 76 61 6c 75  c type of a valu
2eb0: 65 2e 0a 20 20 46 6f 72 20 66 75 6e 63 74 69 6f  e..  For functio
2ec0: 6e 2c 20 6c 65 61 76 69 6e 67 20 69 74 20 75 6e  n, leaving it un
2ed0: 74 6f 75 63 68 65 64 20 77 6f 72 6b 73 20 77 65  touched works we
2ee0: 6c 6c 20 66 6f 72 20 61 6c 6d 6f 73 74 20 61 6c  ll for almost al
2ef0: 6c 20 6c 61 79 65 72 73 2e 0a 0a 20 20 20 20 3e  l layers...    >
2f00: 3e 20 40 74 79 70 65 28 20 31 20 29 0a 20 20 20  > @type( 1 ).   
2f10: 20 69 6e 74 0a 20 20 20 20 3e 3e 20 40 74 79 70   int.    >> @typ
2f20: 65 28 20 32 20 29 0a 20 20 20 20 69 6e 74 0a 20  e( 2 ).    int. 
2f30: 20 20 20 3e 3e 20 40 74 79 70 65 28 20 22 66 6f     >> @type( "fo
2f40: 6f 22 20 29 0a 20 20 20 20 75 6e 6b 6e 6f 77 6e  o" ).    unknown
2f50: 0a 0a 20 20 46 69 6e 65 21 20 4c 65 74 27 73 20  ..  Fine! Let's 
2f60: 74 72 79 20 74 6f 20 74 79 70 65 20 31 2b 32 2e  try to type 1+2.
2f70: 0a 0a 20 20 20 20 3e 3e 20 40 74 79 70 65 28 20  ..    >> @type( 
2f80: 31 20 2b 20 32 20 29 0a 20 20 20 20 2e 2e 2e 5c  1 + 2 ).    ...\
2f90: 76 61 6c 75 65 2e 64 28 31 31 39 29 3a 20 5b 3c  value.d(119): [<
2fa0: 52 45 50 4c 3e 3a 36 3a 38 5d 20 6f 6e 6c 79 20  REPL>:6:8] only 
2fb0: 40 76 61 6c 75 65 20 6c 61 79 65 72 20 63 61 6e  @value layer can
2fc0: 20 63 61 6c 6c 20 6e 61 74 69 76 65 20 66 75 6e   call native fun
2fd0: 63 74 69 6f 6e 0a 0a 20 20 4e 6f 74 65 20 74 68  ction..  Note th
2fe0: 61 74 20 74 68 65 20 62 65 68 61 76 69 6f 72 20  at the behavior 
2ff0: 6f 66 20 74 68 69 73 20 70 72 6f 67 72 61 6d 20  of this program 
3000: 69 73 0a 20 20 20 20 2d 20 72 75 6e 20 31 2b 32  is.    - run 1+2
3010: 20 69 6e 20 74 68 65 20 40 74 79 70 65 20 6c 61   in the @type la
3020: 79 65 72 0a 20 20 61 6e 64 20 4e 4f 54 0a 20 20  yer.  and NOT.  
3030: 20 20 2d 20 72 75 6e 20 31 2b 32 20 69 6e 20 40    - run 1+2 in @
3040: 76 61 6c 75 65 20 61 6e 64 20 6f 62 74 61 69 6e  value and obtain
3050: 20 33 20 61 6e 64 20 72 75 6e 20 33 20 69 6e 20   3 and run 3 in 
3060: 74 68 65 20 40 74 79 70 65 2e 0a 20 20 54 68 65  the @type..  The
3070: 20 70 72 6f 62 6c 65 6d 20 69 73 2c 20 74 68 65   problem is, the
3080: 20 76 61 72 69 61 62 6c 65 20 22 2b 22 20 69 73   variable "+" is
3090: 20 64 65 66 69 6e 65 64 20 6f 6e 6c 79 20 69 6e   defined only in
30a0: 20 74 68 65 20 40 76 61 6c 75 65 20 6c 61 79 65   the @value laye
30b0: 72 2e 0a 20 20 54 6f 20 63 61 72 72 79 20 6f 75  r..  To carry ou
30c0: 74 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 69 6e  t computation in
30d0: 20 74 68 65 20 40 74 79 70 65 20 6c 61 79 65 72   the @type layer
30e0: 2e 20 57 65 20 6e 65 65 64 20 74 6f 20 64 65 66  . We need to def
30f0: 69 6e 65 20 69 74 20 61 6c 73 6f 0a 20 20 69 6e  ine it also.  in
3100: 20 74 68 65 20 40 74 79 70 65 20 6c 61 79 65 72   the @type layer
3110: 2e 0a 0a 20 20 54 6f 20 64 65 66 69 6e 65 20 73  ...  To define s
3120: 6f 6d 65 20 76 61 72 69 61 62 6c 65 20 69 6e 20  ome variable in 
3130: 61 20 73 70 65 63 69 66 69 63 20 6c 61 79 65 72  a specific layer
3140: 2c 20 75 73 65 20 40 4c 61 79 65 72 4e 61 6d 65  , use @LayerName
3150: 20 69 6e 20 70 6c 61 63 65 20 6f 66 0a 20 20 28   in place of.  (
3160: 6c 65 74 7c 76 61 72 7c 64 65 66 29 73 2e 0a 0a  let|var|def)s...
3170: 20 20 20 20 3e 3e 20 6c 65 74 20 78 20 3d 20 32      >> let x = 2
3180: 0a 20 20 20 20 3e 3e 20 40 76 61 6c 75 65 20 78  .    >> @value x
3190: 20 3d 20 32 0a 20 20 20 20 3e 3e 20 40 74 79 70   = 2.    >> @typ
31a0: 65 20 78 20 3d 20 22 69 6e 74 22 0a 20 20 20 20  e x = "int".    
31b0: 3e 3e 20 40 68 6f 67 65 20 78 20 3d 20 22 66 75  >> @hoge x = "fu
31c0: 67 61 22 0a 0a 20 20 46 6f 72 20 22 2b 22 2c 20  ga"..  For "+", 
31d0: 64 6f 20 69 74 20 6c 69 6b 65 20 74 68 69 73 2e  do it like this.
31e0: 0a 0a 20 20 20 20 3e 3e 20 40 74 79 70 65 20 22  ..    >> @type "
31f0: 2b 22 20 3d 20 66 75 6e 28 78 2c 79 29 20 7b 40  +" = fun(x,y) {@
3200: 76 61 6c 75 65 28 0a 20 20 20 20 3e 3e 20 20 20  value(.    >>   
3210: 69 66 28 20 40 74 79 70 65 28 78 29 3d 3d 22 69  if( @type(x)=="i
3220: 6e 74 22 20 26 26 20 40 74 79 70 65 28 79 29 3d  nt" && @type(y)=
3230: 3d 22 69 6e 74 22 20 29 20 7b 20 22 69 6e 74 22  ="int" ) { "int"
3240: 20 7d 20 65 6c 73 65 20 7b 20 22 74 79 70 65 65   } else { "typee
3250: 72 72 6f 72 22 20 7d 0a 20 20 20 20 3e 3e 20 29  rror" }.    >> )
3260: 7d 0a 20 20 20 20 70 6f 6c 65 6d 79 2e 76 61 6c  }.    polemy.val
3270: 75 65 2e 6e 61 74 69 76 65 21 28 49 6e 74 56 61  ue.native!(IntVa
3280: 6c 75 65 2c 49 6e 74 56 61 6c 75 65 2c 49 6e 74  lue,IntValue,Int
3290: 56 61 6c 75 65 29 2e 6e 61 74 69 76 65 2e 5f 5f  Value).native.__
32a0: 61 6e 6f 6e 63 6c 61 73 73 32 34 0a 0a 20 20 49  anonclass24..  I
32b0: 74 20 69 73 20 6a 75 73 74 20 63 6f 6d 70 75 74  t is just comput
32c0: 69 6e 67 20 74 68 65 20 72 65 74 75 72 6e 20 74  ing the return t
32d0: 79 70 65 20 66 72 6f 6d 20 74 68 65 20 69 6e 70  ype from the inp
32e0: 75 74 20 74 79 70 65 2e 0a 20 20 4e 6f 74 20 68  ut type..  Not h
32f0: 65 72 65 20 74 68 61 74 20 74 68 65 20 69 6e 74  ere that the int
3300: 65 6e 64 65 64 20 22 6d 65 61 6e 69 6e 67 22 20  ended "meaning" 
3310: 6f 66 20 69 66 2d 74 68 65 6e 2d 65 6c 73 65 20  of if-then-else 
3320: 69 73 20 74 68 65 20 72 75 6e 74 69 6d 65 2d 62  is the runtime-b
3330: 72 61 6e 63 68 69 6e 67 2c 0a 20 20 61 6e 64 20  ranching,.  and 
3340: 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 22  the meaning of "
3350: 3d 3d 22 20 69 73 20 74 68 65 20 76 61 6c 75 65  ==" is the value
3360: 2d 63 6f 6d 70 61 72 69 73 6f 6e 2e 20 54 68 65  -comparison. The
3370: 73 65 20 61 72 65 20 74 68 65 20 40 76 61 6c 75  se are the @valu
3380: 65 20 6c 61 79 65 72 0a 20 20 62 65 68 61 76 69  e layer.  behavi
3390: 6f 72 2e 20 53 6f 20 77 65 20 68 61 76 65 20 64  or. So we have d
33a0: 65 66 69 6e 65 64 20 74 68 65 20 66 75 6e 63 74  efined the funct
33b0: 69 6f 6e 20 62 6f 64 79 20 69 6e 73 69 64 65 20  ion body inside 
33c0: 40 76 61 6c 75 65 20 6c 61 79 65 72 2e 0a 20 20  @value layer..  
33d0: 42 75 74 20 77 68 65 6e 20 77 65 20 72 65 66 65  But when we refe
33e0: 72 20 74 68 65 20 76 61 72 69 61 62 6c 65 73 20  r the variables 
33f0: 78 20 61 6e 64 20 79 2c 20 77 65 20 6e 65 65 64  x and y, we need
3400: 20 69 74 73 20 40 74 79 70 65 20 6c 61 79 65 72   its @type layer
3410: 20 6d 65 61 6e 69 6e 67 2e 0a 20 20 48 65 6e 63   meaning..  Henc
3420: 65 20 77 65 20 75 73 65 20 40 74 79 70 65 28 29  e we use @type()
3430: 20 74 68 65 72 65 2e 0a 0a 20 20 4e 6f 77 20 77   there...  Now w
3440: 65 20 67 65 74 20 69 74 2e 0a 0a 20 20 20 20 3e  e get it...    >
3450: 3e 20 40 74 79 70 65 28 20 31 20 2b 20 32 20 29  > @type( 1 + 2 )
3460: 0a 20 20 20 20 69 6e 74 0a 0a 20 20 57 65 6c 6c  .    int..  Well
3470: 2c 20 62 75 74 20 64 6f 20 77 65 20 68 61 76 65  , but do we have
3480: 20 74 6f 20 64 65 66 69 6e 65 20 74 68 65 20 40   to define the @
3490: 74 79 70 65 20 6c 61 79 65 72 20 6d 65 61 6e 69  type layer meani
34a0: 6e 67 20 66 6f 72 20 65 76 65 72 79 20 76 61 72  ng for every var
34b0: 69 61 62 6c 65 73 3f 3f 3f 0a 20 20 4e 6f 2e 20  iables???.  No. 
34c0: 41 66 74 65 72 20 79 6f 75 20 64 65 66 69 6e 65  After you define
34d0: 64 20 40 74 79 70 65 20 22 2b 22 2c 20 79 6f 75  d @type "+", you
34e0: 27 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  'll automaticall
34f0: 79 20 67 65 74 20 74 68 65 20 66 6f 6c 6c 6f 77  y get the follow
3500: 69 6e 67 3a 0a 0a 20 20 20 20 3e 3e 20 64 65 66  ing:..    >> def
3510: 20 64 6f 75 62 6c 65 28 78 29 20 7b 20 78 20 2b   double(x) { x +
3520: 20 78 20 7d 0a 20 20 20 20 28 66 75 6e 63 74 69   x }.    (functi
3530: 6f 6e 3a 31 37 65 34 37 34 30 3a 31 37 38 39 37  on:17e4740:17897
3540: 32 30 29 0a 0a 20 20 20 20 3e 3e 20 40 74 79 70  20)..    >> @typ
3550: 65 28 20 64 6f 75 62 6c 65 28 31 32 33 29 20 29  e( double(123) )
3560: 0a 20 20 20 20 69 6e 74 0a 0a 20 20 45 76 65 72  .    int..  Ever
3570: 79 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 66  y user-defined f
3580: 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 61 75 74  unctions are aut
3590: 6f 6d 61 74 69 63 61 6c 6c 79 20 22 6c 69 66 74  omatically "lift
35a0: 22 65 64 20 74 6f 20 74 68 65 20 61 70 70 72 6f  "ed to the appro
35b0: 70 72 69 61 74 65 20 6c 61 79 65 72 2e 0a 20 20  priate layer..  
35c0: 4f 6e 6c 79 20 70 72 69 6d 69 74 69 76 65 20 66  Only primitive f
35d0: 75 6e 63 74 69 6f 6e 73 20 6c 69 6b 65 20 22 2b  unctions like "+
35e0: 22 20 72 65 71 75 69 72 65 73 20 40 79 6f 75 72  " requires @your
35f0: 4e 65 77 4c 61 79 65 72 20 61 6e 6e 6f 74 61 74  NewLayer annotat
3600: 69 6f 6e 2e 0a 0a 0a 0a 5b 4c 61 79 65 72 73 20  ion.....[Layers 
3610: 3a 3a 20 6e 65 75 74 72 61 6c 2d 6c 61 79 65 72  :: neutral-layer
3620: 5d 0a 0a 20 20 6c 65 74 7c 76 61 72 7c 64 65 66  ]..  let|var|def
3630: 20 69 73 20 74 6f 20 64 65 66 69 6e 65 20 61 20   is to define a 
3640: 76 61 72 69 61 62 6c 65 20 69 6e 20 74 68 65 20  variable in the 
3650: 22 63 75 72 72 65 6e 74 22 20 6c 61 79 65 72 2e  "current" layer.
3660: 0a 20 20 4e 6f 74 20 6e 65 63 65 73 73 61 72 79  .  Not necessary
3670: 20 74 6f 20 74 68 65 20 40 76 61 6c 75 65 20 6c   to the @value l
3680: 61 79 65 72 2e 0a 0a 20 20 20 20 3e 3e 20 40 76  ayer...    >> @v
3690: 61 6c 75 65 28 20 6c 65 74 20 78 20 3d 20 31 20  alue( let x = 1 
36a0: 69 6e 20 40 76 61 6c 75 65 28 78 29 20 29 0a 20  in @value(x) ). 
36b0: 20 20 20 31 0a 0a 20 20 20 20 3e 3e 20 40 6d 61     1..    >> @ma
36c0: 63 72 6f 28 20 6c 65 74 20 78 20 3d 20 31 20 69  cro( let x = 1 i
36d0: 6e 20 40 76 61 6c 75 65 28 78 29 20 29 0a 20 20  n @value(x) ).  
36e0: 20 20 70 6f 6c 65 6d 79 2e 66 61 69 6c 75 72 65    polemy.failure
36f0: 2e 52 75 6e 74 69 6d 65 45 78 63 65 70 74 69 6f  .RuntimeExceptio
3700: 6e 3a 20 5b 3c 52 45 50 4c 3e 3a 31 34 3a 32 39  n: [<REPL>:14:29
3710: 5d 20 76 61 72 69 61 62 6c 65 20 78 20 6e 6f 74  ] variable x not
3720: 20 66 6f 75 6e 64 0a 0a 20 20 20 20 3e 3e 20 40   found..    >> @
3730: 6d 61 63 72 6f 28 20 6c 65 74 20 78 20 3d 20 31  macro( let x = 1
3740: 20 69 6e 20 40 6d 61 63 72 6f 28 78 29 20 29 0a   in @macro(x) ).
3750: 20 20 20 20 7b 70 6f 73 40 76 61 6c 75 65 3a 7b      {pos@value:{
3760: 6c 69 6e 65 6e 6f 40 76 61 6c 75 65 3a 31 35 2c  lineno@value:15,
3770: 20 2e 2e 2e 0a 0a 0a 0a 5b 4c 61 79 65 72 73 20   .......[Layers 
3780: 3a 3a 20 4c 61 79 65 72 65 64 2d 50 61 72 61 6d  :: Layered-Param
3790: 65 74 65 72 73 5d 0a 0a 20 20 20 20 3e 3e 20 64  eters]..    >> d
37a0: 65 66 20 66 6f 6f 28 78 20 40 6d 61 63 72 6f 20  ef foo(x @macro 
37b0: 40 76 61 6c 75 65 29 20 7b 20 7b 66 73 74 3a 20  @value) { {fst: 
37c0: 78 2c 20 73 6e 64 3a 20 40 6d 61 63 72 6f 28 78  x, snd: @macro(x
37d0: 29 7d 20 7d 0a 20 20 20 20 28 66 75 6e 63 74 69  )} }.    (functi
37e0: 6f 6e 3a 31 37 33 30 33 36 30 3a 31 37 38 39 37  on:1730360:17897
37f0: 32 30 29 0a 0a 20 20 49 66 20 79 6f 75 20 61 6e  20)..  If you an
3800: 6e 6f 74 61 74 65 20 66 75 6e 63 74 69 6f 6e 20  notate function 
3810: 70 61 72 61 6d 65 74 65 72 73 20 62 79 20 40 4c  parameters by @L
3820: 61 79 65 72 4e 61 6d 65 73 2c 20 77 68 65 6e 20  ayerNames, when 
3830: 79 6f 75 20 69 6e 76 6f 6b 65 20 74 68 65 20 66  you invoke the f
3840: 75 6e 63 74 69 6f 6e 2e 2e 2e 0a 0a 20 20 20 20  unction.....    
3850: 3e 3e 20 66 6f 6f 28 31 2b 32 29 0a 20 20 20 20  >> foo(1+2).    
3860: 7b 73 6e 64 40 76 61 6c 75 65 3a 20 7b 70 6f 73  {snd@value: {pos
3870: 40 76 61 6c 75 65 3a 7b 6c 69 6e 65 6e 6f 40 76  @value:{lineno@v
3880: 61 6c 75 65 3a 31 37 2c 20 63 6f 6c 75 6d 6e 40  alue:17, column@
3890: 76 61 6c 75 65 3a 35 2c 20 66 69 6c 65 6e 61 6d  value:5, filenam
38a0: 65 40 76 61 6c 75 65 3a 3c 52 45 50 4c 3e 7d 2c  e@value:<REPL>},
38b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
38c0: 20 20 20 69 73 40 76 61 6c 75 65 3a 61 70 70 2c     is@value:app,
38d0: 20 61 72 67 40 76 61 6c 75 65 3a 7b 2e 2e 2e 0a   arg@value:{....
38e0: 20 20 20 20 2f 66 73 74 40 76 61 6c 75 65 3a 33      /fst@value:3
38f0: 0a 20 20 20 20 2f 7d 0a 0a 20 20 69 74 73 20 63  .    /}..  its c
3900: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 61 72 67  orresponding arg
3910: 75 6d 65 6e 74 73 20 61 72 65 20 65 76 61 6c 75  uments are evalu
3920: 61 74 65 64 20 69 6e 20 74 68 65 20 6c 61 79 65  ated in the laye
3930: 72 20 61 6e 64 20 70 61 73 73 65 64 20 74 6f 20  r and passed to 
3940: 69 74 2e 0a 20 20 49 66 20 79 6f 75 20 73 70 65  it..  If you spe
3950: 63 69 66 79 20 6d 75 6c 74 69 70 6c 65 20 6c 61  cify multiple la
3960: 79 65 72 73 2c 20 74 68 65 20 61 72 67 75 6d 65  yers, the argume
3970: 6e 74 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73  nt expression is
3980: 20 72 75 6e 20 6d 75 6c 74 69 70 6c 65 20 74 69   run multiple ti
3990: 6d 65 73 2e 0a 20 20 49 66 20 79 6f 75 20 64 6f  mes..  If you do
39a0: 20 6e 6f 74 20 73 70 65 63 69 66 79 20 61 6e 79   not specify any
39b0: 20 6c 61 79 65 72 20 66 6f 72 20 61 20 70 61 72   layer for a par
39c0: 61 6d 65 74 65 72 2c 20 69 74 20 77 6f 72 6b 73  ameter, it works
39d0: 20 69 6e 20 74 68 65 20 6e 65 75 74 72 61 6c 20   in the neutral 
39e0: 6c 61 79 65 72 2e 0a 3c 2f 70 72 65 3e 0a 29 29  layer..</pre>.))
39f0: 0a 0a 0a 24 28 53 45 43 54 49 4f 4e 20 4d 61 63  ...$(SECTION Mac
3a00: 72 6f 20 4c 61 79 65 72 73 2c 20 24 28 53 45 43  ro Layers, $(SEC
3a10: 42 4f 44 59 0a 3c 70 3e 0a 50 6f 6c 65 6d 79 20  BODY.<p>.Polemy 
3a20: e8 a8 80 e8 aa 9e e7 b5 84 e3 81 bf e8 be bc e3  ................
3a30: 81 bf e3 81 ae e3 83 ac e3 82 a4 e3 83 a4 e3 81  ................
3a40: af 20 3c 63 6f 64 65 3e 40 76 61 6c 75 65 3c 2f  . <code>@value</
3a50: 63 6f 64 65 3e 20 e3 81 a8 20 3c 63 6f 64 65 3e  code> ... <code>
3a60: 40 6d 61 63 72 6f 3c 2f 63 6f 64 65 3e 20 e3 81  @macro</code> ..
3a70: ae e4 ba 8c e3 81 a4 e3 81 a7 e3 81 99 e3 80 82  ................
3a80: 0a ef bc 88 e5 86 85 e9 83 a8 e7 9a 84 e3 81 ab  ................
3a90: e3 81 af e3 82 82 e3 81 86 e3 81 84 e3 81 8f e3  ................
3aa0: 81 a4 e3 81 8b e3 81 82 e3 82 8a e3 81 be e3 81  ................
3ab0: 99 e3 81 8c e3 80 81 e3 83 a6 e3 83 bc e3 82 b6  ................
3ac0: e3 81 8b e3 82 89 e7 9b b4 e6 8e a5 e3 81 af e4  ................
3ad0: bd bf e3 81 88 e3 81 be e3 81 9b e3 82 93 e3 80  ................
3ae0: 82 ef bc 89 0a 3c 63 6f 64 65 3e 40 76 61 6c 75  .....<code>@valu
3af0: 65 3c 2f 63 6f 64 65 3e 20 e3 81 af e3 80 81 e3  e</code> .......
3b00: 80 8c e6 99 ae e9 80 9a e3 81 ab e3 80 8d e6 99  ................
3b10: ae e9 80 9a e3 81 ae e3 82 bb e3 83 9e e3 83 b3  ................
3b20: e3 83 86 e3 82 a3 e3 82 af e3 82 b9 e3 81 a7 e3  ................
3b30: 83 97 e3 83 ad e3 82 b0 e3 83 a9 e3 83 a0 e3 82  ................
3b40: 92 e5 ae 9f e8 a1 8c e3 81 99 e3 82 8b e3 83 ac  ................
3b50: e3 82 a4 e3 83 a4 e3 81 a7 e3 81 97 e3 81 9f e3  ................
3b60: 80 82 0a 3c 63 6f 64 65 3e 40 6d 61 63 72 6f 3c  ...<code>@macro<
3b70: 2f 63 6f 64 65 3e 20 e3 81 af e3 80 81 e5 ae 9f  /code> .........
3b80: e3 81 af e3 80 81 3c 63 6f 64 65 3e 40 76 61 6c  ......<code>@val
3b90: 75 65 3c 2f 63 6f 64 65 3e 20 e3 82 88 e3 82 8a  ue</code> ......
3ba0: e3 82 82 e5 89 8d e3 81 ab e5 ae 9f e8 a1 8c e3  ................
3bb0: 81 95 e3 82 8c e3 82 8b e3 83 ac e3 82 a4 e3 83  ................
3bc0: a4 e3 81 a7 e3 80 81 0a e3 80 8c e3 83 97 e3 83  ................
3bd0: ad e3 82 b0 e3 83 a9 e3 83 a0 e3 82 92 e5 ae 9f  ................
3be0: e8 a1 8c e3 81 99 e3 82 8b e3 81 a8 e3 81 9d e3  ................
3bf0: 81 ae e6 a7 8b e6 96 87 e6 9c a8 e3 82 92 e8 bf  ................
3c00: 94 e3 81 99 e3 80 8d e3 81 a8 e3 81 84 e3 81 86  ................
3c10: e3 82 bb e3 83 9e e3 83 b3 e3 83 86 e3 82 a3 e3  ................
3c20: 82 af e3 82 b9 e3 81 a7 e5 8b 95 e3 81 8d e3 81  ................
3c30: be e3 81 99 e3 80 82 0a 3c 2f 70 3e 0a 3c 70 72  ........</p>.<pr
3c40: 65 3e 0a 20 20 20 20 28 e3 81 93 e3 81 93 e3 81  e>.    (........
3c50: ab e4 be 8b 29 0a 3c 2f 70 72 65 3e 0a 3c 70 3e  ....).</pre>.<p>
3c60: 0a e5 8b 95 e3 81 8d e3 81 a8 e3 81 97 e3 81 a6  ................
3c70: e3 81 af e3 81 93 e3 81 86 e3 81 a7 e3 81 99 e3  ................
3c80: 80 82 0a 3c 2f 70 3e 0a 3c 6f 6c 3e 0a 3c 6c 69  ...</p>.<ol>.<li
3c90: 3e e9 96 a2 e6 95 b0 e5 91 bc e3 81 b3 e5 87 ba  >...............
3ca0: e3 81 97 e6 99 82 ef bc 88 e3 81 a8 e3 83 88 e3  ................
3cb0: 83 83 e3 83 97 e3 83 ac e3 83 99 e3 83 ab e7 92  ................
3cc0: b0 e5 a2 83 e3 81 ae e5 ae 9f e8 a1 8c e9 96 8b  ................
3cd0: e5 a7 8b e6 99 82 ef bc 89 e3 81 ab e3 80 81 0a  ................
3ce0: 09 e3 81 be e3 81 9a e3 80 81 3c 63 6f 64 65 3e  ..........<code>
3cf0: 40 6d 61 63 72 6f 3c 2f 63 6f 64 65 3e 20 e3 83  @macro</code> ..
3d00: ac e3 82 a4 e3 83 a4 e3 81 a7 e3 82 b3 e3 83 bc  ................
3d10: e3 83 89 e3 82 92 e5 ae 9f e8 a1 8c e3 80 82 3c  ...............<
3d20: 2f 6c 69 3e 0a 3c 6c 69 3e e8 bf 94 e3 81 a3 e3  /li>.<li>.......
3d30: 81 a6 e3 81 8d e3 81 9f e6 a7 8b e6 96 87 e6 9c  ................
3d40: a8 e3 82 92 e3 80 81 3c 63 6f 64 65 3e 40 76 61  .......<code>@va
3d50: 6c 75 65 3c 2f 63 6f 64 65 3e 20 e3 83 ac e3 82  lue</code> .....
3d60: a4 e3 83 a4 e3 80 81 0a 09 e3 81 be e3 81 9f e3  ................
3d70: 81 af e3 81 9d e3 81 ae e9 96 a2 e6 95 b0 e3 82  ................
3d80: 92 e5 91 bc e3 81 b3 e5 87 ba e3 81 97 e3 81 9f  ................
3d90: e3 81 a8 e3 81 8d e3 81 ae e3 83 ac e3 82 a4 e3  ................
3da0: 83 a4 e3 81 a7 e5 ae 9f e8 a1 8c e3 80 82 3c 2f  ..............</
3db0: 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 3c 70 3e 0a 3c 63  li>.</ol>.<p>.<c
3dc0: 6f 64 65 3e 40 6d 61 63 72 6f 3c 2f 63 6f 64 65  ode>@macro</code
3dd0: 3e 20 e3 83 ac e3 82 a4 e3 83 a4 e3 82 82 e6 89  > ..............
3de0: 80 e8 a9 ae e3 81 9f e3 81 a0 e3 81 ae e3 83 ac  ................
3df0: e3 82 a4 e3 83 a4 e3 81 a7 e3 81 99 e3 81 ae e3  ................
3e00: 81 a7 e3 80 81 0a e4 b8 8a e3 81 a7 e8 aa ac e6  ................
3e10: 98 8e e3 81 97 e3 81 9f e6 96 b9 e6 b3 95 e3 81  ................
3e20: a7 20 3c 63 6f 64 65 3e 40 6d 61 63 72 6f 3c 2f  . <code>@macro</
3e30: 63 6f 64 65 3e 20 e3 83 ac e3 82 a4 e3 83 a4 e3  code> ..........
3e40: 81 ab e9 96 a2 e6 95 b0 e3 81 aa e3 81 a9 e3 82  ................
3e50: 92 e7 99 bb e9 8c b2 e3 81 97 e3 81 a6 e3 81 8a  ................
3e60: e3 81 8f e3 81 93 e3 81 a8 e3 81 a7 e3 80 81 0a  ................
3e70: e6 a7 8b e6 96 87 e6 9c a8 e3 81 ae e7 94 9f e6  ................
3e80: 88 90 e3 82 92 e3 81 84 e3 81 98 e3 82 8b e3 81  ................
3e90: 93 e3 81 a8 e3 81 8c e5 8f af e8 83 bd e3 81 a7  ................
3ea0: e3 81 99 e3 80 82 e3 81 be e3 81 95 e3 81 ab e3  ................
3eb0: 83 9e e3 82 af e3 83 ad e3 80 82 0a 3c 2f 70 3e  ............</p>
3ec0: 0a 0a 24 28 44 44 4f 43 5f 4d 45 4d 42 45 52 53  ..$(DDOC_MEMBERS
3ed0: 0a 24 28 53 45 43 54 49 4f 4e 20 e4 bd bf e3 81  .$(SECTION .....
3ee0: 84 e6 96 b9 2c 20 24 28 53 45 43 42 4f 44 59 0a  ...., $(SECBODY.
3ef0: 3c 70 72 65 3e 0a 20 20 20 57 68 65 6e 20 66 75  <pre>.   When fu
3f00: 6e 63 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65  nction is invoke
3f10: 64 2c 20 69 74 20 66 69 72 73 74 20 72 75 6e 20  d, it first run 
3f20: 69 6e 20 74 68 65 20 40 6d 61 63 72 6f 20 6c 61  in the @macro la
3f30: 79 65 72 2c 20 61 6e 64 20 61 66 74 65 72 20 74  yer, and after t
3f40: 68 61 74 2c 0a 20 20 20 69 74 20 72 75 6e 20 69  hat,.   it run i
3f50: 6e 20 74 68 65 20 6e 65 75 74 72 61 6c 20 6c 61  n the neutral la
3f60: 79 65 72 2e 20 48 65 72 65 20 69 73 20 61 6e 20  yer. Here is an 
3f70: 65 78 61 6d 70 6c 65 2e 0a 0a 20 20 20 20 20 3e  example...     >
3f80: 3e 20 40 6d 61 63 72 6f 20 74 77 69 63 65 28 78  > @macro twice(x
3f90: 29 20 7b 20 78 3b 20 78 20 7d 0a 20 20 20 20 20  ) { x; x }.     
3fa0: 3e 3e 20 64 65 66 20 66 28 29 20 7b 20 74 77 69  >> def f() { twi
3fb0: 63 65 28 70 72 69 6e 74 28 22 48 65 6c 6c 6f 22  ce(print("Hello"
3fc0: 29 29 3b 20 39 39 39 20 7d 0a 20 20 20 20 20 28  )); 999 }.     (
3fd0: 66 75 6e 63 74 69 6f 6e 3a 31 37 33 62 36 61 30  function:173b6a0
3fe0: 3a 31 37 38 39 37 32 30 29 0a 20 20 20 20 20 3e  :1789720).     >
3ff0: 3e 20 66 28 29 0a 20 20 20 20 20 48 65 6c 6c 6f  > f().     Hello
4000: 0a 20 20 20 20 20 48 65 6c 6c 6f 0a 20 20 20 20  .     Hello.    
4010: 20 39 39 39 0a 0a 20 20 20 57 68 65 6e 20 74 68   999..   When th
4020: 65 20 69 6e 74 65 72 70 72 65 74 65 72 20 65 76  e interpreter ev
4030: 61 6c 75 61 74 65 73 20 66 28 29 2c 20 69 74 20  aluates f(), it 
4040: 66 69 72 73 74 20 65 78 65 63 75 74 65 73 0a 20  first executes. 
4050: 20 20 20 20 22 74 77 69 63 65 28 70 72 69 6e 74      "twice(print
4060: 28 22 48 65 6c 6c 6f 22 29 29 3b 20 39 39 39 22  ("Hello")); 999"
4070: 0a 20 20 20 69 6e 20 74 68 65 20 40 6d 61 63 72  .   in the @macr
4080: 6f 20 6c 61 79 65 72 2e 20 42 61 73 69 63 61 6c  o layer. Basical
4090: 6c 79 20 77 68 61 74 20 69 74 20 64 6f 65 73 20  ly what it does 
40a0: 69 73 20 74 6f 20 6a 75 73 74 20 63 6f 6e 73 74  is to just const
40b0: 72 75 63 74 20 69 74 73 20 73 79 6e 74 61 78 20  ruct its syntax 
40c0: 74 72 65 65 2e 0a 20 20 20 42 75 74 2c 20 73 69  tree..   But, si
40d0: 6e 63 65 20 77 65 20 68 61 76 65 20 64 65 66 69  nce we have defi
40e0: 6e 65 64 20 74 68 65 20 22 74 77 69 63 65 22 20  ned the "twice" 
40f0: 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74 68 65 20  function in the 
4100: 40 6d 61 63 72 6f 20 6c 61 79 65 72 2c 20 69 74  @macro layer, it
4110: 20 69 73 0a 20 20 20 65 78 65 63 75 74 65 20 61   is.   execute a
4120: 73 20 61 20 66 75 6e 63 74 69 6f 6e 2e 20 52 65  s a function. Re
4130: 73 75 6c 74 69 6e 67 20 73 79 6e 74 61 78 20 74  sulting syntax t
4140: 72 65 65 20 69 73 0a 20 20 20 20 20 22 70 72 69  ree is.     "pri
4150: 6e 74 28 22 48 65 6c 6c 6f 22 29 3b 20 70 72 69  nt("Hello"); pri
4160: 6e 74 28 22 48 65 6c 6c 6f 22 29 3b 20 39 39 39  nt("Hello"); 999
4170: 22 0a 20 20 20 61 6e 64 20 74 68 69 73 20 69 73  ".   and this is
4180: 20 65 78 65 63 75 74 65 64 20 6f 6e 20 74 68 65   executed on the
4190: 20 6e 65 75 74 72 61 6c 20 28 69 6e 20 74 68 69   neutral (in thi
41a0: 73 20 65 78 61 6d 70 6c 65 2c 20 40 76 61 6c 75  s example, @valu
41b0: 65 29 20 6c 61 79 65 72 2e 0a 20 20 20 54 68 69  e) layer..   Thi
41c0: 73 20 69 73 20 74 68 65 20 72 65 61 73 6f 6e 20  s is the reason 
41d0: 77 68 79 20 79 6f 75 20 73 65 65 20 74 77 6f 20  why you see two 
41e0: 22 48 65 6c 6c 6f 22 73 2e 0a 0a 20 20 20 20 20  "Hello"s...     
41f0: 20 5b 5b 71 75 6f 74 65 20 61 6e 64 20 75 6e 71   [[quote and unq
4200: 75 6f 74 65 5d 5d 0a 0a 20 20 20 48 65 72 65 20  uote]]..   Here 
4210: 69 73 20 6d 6f 72 65 20 69 6e 76 6f 6c 76 65 64  is more involved
4220: 20 65 78 61 6d 70 6c 65 20 6f 66 20 63 6f 64 65   example of code
4230: 20 67 65 6e 72 61 74 69 6f 6e 2e 0a 20 20 20 46   genration..   F
4240: 72 6f 6d 20 22 78 22 2c 20 69 74 20 67 65 6e 65  rom "x", it gene
4250: 72 61 74 65 73 20 22 78 2a 78 2a 78 2a 78 2a 78  rates "x*x*x*x*x
4260: 2a 78 2a 78 2a 78 2a 78 2a 78 22 2e 0a 0a 20 20  *x*x*x*x*x"...  
4270: 20 20 20 40 6d 61 63 72 6f 20 70 6f 77 31 30 28     @macro pow10(
4280: 78 29 20 7b 0a 20 20 20 20 20 20 20 40 76 61 6c  x) {.       @val
4290: 75 65 28 0a 20 20 20 20 20 20 20 20 20 64 65 66  ue(.         def
42a0: 20 70 6f 77 28 78 2c 20 6e 29 20 7b 0a 20 20 20   pow(x, n) {.   
42b0: 20 20 20 20 20 20 20 20 69 66 28 20 6e 20 3d 3d          if( n ==
42c0: 20 31 20 29 20 7b 20 78 20 7d 0a 20 20 20 20 20   1 ) { x }.     
42d0: 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20        else {.   
42e0: 20 20 20 20 20 20 20 20 20 20 40 6d 61 63 72 6f            @macro
42f0: 28 20 40 76 61 6c 75 65 28 78 29 20 2a 20 40 76  ( @value(x) * @v
4300: 61 6c 75 65 28 70 6f 77 28 78 2c 6e 2d 31 29 29  alue(pow(x,n-1))
4310: 20 29 0a 20 20 20 20 20 20 20 20 20 20 20 7d 0a   ).           }.
4320: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
4330: 20 20 20 20 69 6e 0a 20 20 20 20 20 20 20 20 20      in.         
4340: 20 20 70 6f 77 28 40 6d 61 63 72 6f 28 78 29 2c    pow(@macro(x),
4350: 31 30 29 0a 20 20 20 20 20 20 20 29 0a 20 20 20  10).       ).   
4360: 20 20 7d 3b 0a 0a 20 20 20 48 65 72 65 2c 20 78    };..   Here, x
4370: 20 69 73 20 61 20 73 79 6e 74 61 78 20 74 72 65   is a syntax tre
4380: 65 20 62 75 74 20 6e 20 69 73 20 61 6e 20 61 63  e but n is an ac
4390: 74 75 61 6c 20 69 6e 74 65 67 65 72 2e 20 49 66  tual integer. If
43a0: 20 79 6f 75 20 72 65 61 64 20 63 61 72 65 66 75   you read carefu
43b0: 6c 6c 79 2c 0a 20 20 20 79 6f 75 20 73 68 6f 75  lly,.   you shou
43c0: 6c 64 20 67 65 74 20 77 68 61 74 20 69 73 20 67  ld get what is g
43d0: 6f 69 6e 67 20 6f 6e 2e 20 42 61 73 69 63 61 6c  oing on. Basical
43e0: 6c 79 2c 20 40 6d 61 63 72 6f 20 63 61 6e 20 62  ly, @macro can b
43f0: 65 20 63 6f 6e 73 69 64 65 72 65 64 20 6c 69 6b  e considered lik
4400: 65 0a 20 20 20 71 75 61 73 69 71 75 6f 74 69 6e  e.   quasiquotin
4410: 67 20 61 6e 64 20 40 76 61 6c 75 65 20 74 6f 20  g and @value to 
4420: 62 65 20 61 6e 20 65 73 63 61 70 65 20 66 72 6f  be an escape fro
4430: 6d 20 69 74 2e 0a 3c 2f 70 72 65 3e 0a 29 29 0a  m it..</pre>.)).
4440: 24 28 53 45 43 54 49 4f 4e 20 e5 be ae e5 a6 99  $(SECTION ......
4450: e3 81 aa e6 8c 99 e5 8b 95 2c 20 24 28 53 45 43  ........., $(SEC
4460: 42 4f 44 59 0a 3c 70 72 65 3e 0a 20 20 20 28 72  BODY.<pre>.   (r
4470: 61 77 6d 61 63 72 6f 29 20 e3 83 ac e3 82 a4 e3  awmacro) .......
4480: 83 a4 e3 81 ae e8 a9 b1 0a 0a 20 20 20 20 20 20  ..........      
4490: 5b 5b 6c 69 6d 69 74 61 74 69 6f 6e 73 5d 5d 0a  [[limitations]].
44a0: 0a 20 20 20 54 68 69 73 20 40 6d 61 63 72 6f 20  .   This @macro 
44b0: 6c 61 79 65 72 20 69 73 20 61 20 76 65 72 79 20  layer is a very 
44c0: 70 72 69 6d 69 74 69 76 65 20 6f 6e 65 2c 20 61  primitive one, a
44d0: 6e 64 20 6e 6f 74 20 61 20 70 65 72 66 65 63 74  nd not a perfect
44e0: 20 6d 61 63 72 6f 20 6c 61 6e 67 75 61 67 65 2e   macro language.
44f0: 0a 20 20 20 54 77 6f 20 6d 61 6a 6f 72 20 6c 69  .   Two major li
4500: 6d 69 74 61 74 69 6f 6e 73 20 61 72 65 20 73 65  mitations are se
4510: 65 6e 20 69 6e 20 74 68 65 20 66 6f 6c 6c 6f 77  en in the follow
4520: 69 6e 67 20 22 69 74 22 20 65 78 61 6d 70 6c 65  ing "it" example
4530: 2e 0a 0a 20 20 20 20 20 3e 3e 20 40 6d 61 63 72  ...     >> @macr
4540: 6f 20 4c 65 74 49 74 42 65 28 78 2c 20 79 29 20  o LetItBe(x, y) 
4550: 7b 20 6c 65 74 20 69 74 20 3d 20 78 20 69 6e 20  { let it = x in 
4560: 79 20 7d 3b 0a 0a 20 20 20 54 68 65 20 76 61 72  y };..   The var
4570: 69 61 62 6c 65 20 6e 61 6d 65 20 69 73 20 6e 6f  iable name is no
4580: 74 20 68 79 67 65 6e 69 63 2c 20 61 6e 64 20 73  t hygenic, and s
4590: 6f 20 77 69 74 68 6f 75 74 20 61 6e 79 20 65 66  o without any ef
45a0: 66 6f 72 74 2c 20 74 68 65 20 73 79 6e 74 61 78  fort, the syntax
45b0: 20 74 72 65 65 20 22 79 22 0a 20 20 20 63 61 6e   tree "y".   can
45c0: 20 61 63 63 65 73 73 20 74 68 65 20 6f 75 74 65   access the oute
45d0: 72 20 76 61 72 69 61 62 6c 65 20 22 69 74 22 2e  r variable "it".
45e0: 0a 0a 20 20 20 20 20 3e 3e 20 64 65 66 20 66 6f  ..     >> def fo
45f0: 6f 28 29 20 7b 20 4c 65 74 49 74 42 65 28 20 31  o() { LetItBe( 1
4600: 2b 32 2b 33 2c 20 69 74 2a 69 74 20 29 20 7d 0a  +2+3, it*it ) }.
4610: 20 20 20 20 20 3e 3e 20 66 6f 6f 28 29 0a 20 20       >> foo().  
4620: 20 20 20 33 36 0a 0a 20 20 20 4f 66 20 63 6f 75     36..   Of cou
4630: 72 73 65 2c 20 74 68 69 73 20 69 73 20 6e 6f 74  rse, this is not
4640: 20 6a 75 73 74 20 61 20 6c 69 6d 69 74 61 74 69   just a limitati
4650: 6f 6e 3b 20 69 74 20 63 61 6e 20 73 6f 6d 65 74  on; it can somet
4660: 69 6d 65 73 20 61 6c 6c 6f 77 20 75 73 20 74 6f  imes allow us to
4670: 20 77 72 69 74 65 0a 20 20 20 6d 61 6e 79 20 69   write.   many i
4680: 6e 74 65 72 65 73 74 69 6e 67 20 6d 61 63 72 6f  nteresting macro
4690: 73 2e 0a 0a 20 20 20 54 68 65 20 6f 74 68 65 72  s...   The other
46a0: 20 70 72 6f 62 6c 65 6d 20 69 73 20 74 68 61 74   problem is that
46b0: 20 74 68 65 20 6d 61 63 72 6f 20 65 78 70 61 6e   the macro expan
46c0: 73 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 64 6f 6e  sion is only don
46d0: 65 20 61 74 20 66 75 6e 63 74 69 6f 6e 20 73 74  e at function st
46e0: 61 72 74 75 70 2e 0a 20 20 20 53 6f 20 0a 0a 20  artup..   So .. 
46f0: 20 20 20 20 3e 3e 20 4c 65 74 49 74 42 65 28 20      >> LetItBe( 
4700: 31 2b 32 2b 33 2c 20 69 74 2a 69 74 20 29 0a 20  1+2+3, it*it ). 
4710: 20 20 20 20 2e 2e 2e 5c 76 61 6c 75 65 2e 64 28      ...\value.d(
4720: 31 37 33 29 3a 20 5b 3c 52 45 50 4c 3e 3a 32 34  173): [<REPL>:24
4730: 3a 31 5d 20 76 61 72 69 61 62 6c 65 20 4c 65 74  :1] variable Let
4740: 49 74 42 65 20 69 73 20 6e 6f 74 20 73 65 74 20  ItBe is not set 
4750: 69 6e 20 6c 61 79 65 72 20 40 76 61 6c 75 65 0a  in layer @value.
4760: 0a 20 20 20 79 6f 75 20 63 61 6e 6e 6f 74 20 64  .   you cannot d
4770: 69 72 65 63 74 6c 79 20 75 73 65 20 74 68 65 20  irectly use the 
4780: 6d 61 63 72 6f 20 69 6e 20 74 68 65 20 73 61 6d  macro in the sam
4790: 65 20 73 63 6f 70 65 20 61 73 20 74 68 65 20 64  e scope as the d
47a0: 65 66 69 6e 69 74 69 6f 6e 2e 0a 20 20 20 59 6f  efinition..   Yo
47b0: 75 20 6e 65 65 64 20 74 6f 20 77 72 61 70 20 69  u need to wrap i
47c0: 74 20 75 70 20 69 6e 20 61 20 66 75 6e 63 74 69  t up in a functi
47d0: 6f 6e 20 28 6c 69 6b 65 20 74 68 65 20 66 6f 6f  on (like the foo
47e0: 28 29 20 69 6e 20 74 68 65 20 61 62 6f 76 65 20  () in the above 
47f0: 65 78 61 6d 70 6c 65 29 2e 0a 3c 2f 70 72 65 3e  example)..</pre>
4800: 0a 29 29 0a 29 0a 29 29 0a 0a 0a 24 28 53 45 43  .)).).))...$(SEC
4810: 54 49 4f 4e 20 42 75 69 6c 74 2d 69 6e 20 50 72  TION Built-in Pr
4820: 69 6d 69 74 69 76 65 73 2c 20 24 28 53 45 43 42  imitives, $(SECB
4830: 4f 44 59 0a 3c 70 3e 0a e7 b5 84 e3 81 bf e8 be  ODY.<p>.........
4840: bc e3 81 bf e9 96 a2 e6 95 b0 e3 83 bb e5 a4 89  ................
4850: e6 95 b0 e3 81 ae e4 b8 80 e8 a6 a7 e3 80 82 0a  ................
4860: 3c 2f 70 3e 0a 24 28 44 44 4f 43 5f 4d 45 4d 42  </p>.$(DDOC_MEMB
4870: 45 52 53 0a 0a 24 28 53 45 43 54 49 4f 4e 20 e3  ERS..$(SECTION .
4880: 83 86 e3 83 bc e3 83 96 e3 83 ab e6 93 8d e4 bd  ................
4890: 9c 2c 20 24 28 53 45 43 42 4f 44 59 0a 20 20 24  ., $(SECBODY.  $
48a0: 28 54 41 42 4c 45 0a 20 20 20 20 24 28 54 52 20  (TABLE.    $(TR 
48b0: 24 28 54 48 20 7b 7d 29 20 24 28 54 44 20 28 29  $(TH {}) $(TD ()
48c0: 29 20 24 28 54 44 20 e7 a9 ba e3 81 ae e3 83 86  ) $(TD .........
48d0: e3 83 bc e3 83 96 e3 83 ab e3 82 92 e4 bd 9c e3  ................
48e0: 82 8b 29 29 0a 20 20 20 20 24 28 54 52 20 24 28  ..)).    $(TR $(
48f0: 54 48 20 2e 29 20 24 28 54 44 20 28 74 2c 20 73  TH .) $(TD (t, s
4900: 29 29 20 24 28 54 44 20 e3 83 86 e3 83 bc e3 83  )) $(TD ........
4910: 96 e3 83 ab 20 74 20 e3 81 ae e5 90 8d e5 89 8d  .... t .........
4920: 20 73 20 e3 81 ae e3 83 95 e3 82 a3 e3 83 bc e3   s .............
4930: 83 ab e3 83 89 e3 81 ae e5 80 a4 e3 82 92 e5 8f  ................
4940: 96 e5 be 97 e3 80 82 e3 81 aa e3 81 91 e3 82 8c  ................
4950: e3 81 b0 20 3c 74 74 3e 75 6e 64 65 66 69 6e 65  ... <tt>undefine
4960: 64 3c 2f 74 74 3e 29 29 0a 20 20 20 20 24 28 54  d</tt>)).    $(T
4970: 52 20 24 28 54 48 20 2e 3f 29 20 24 28 54 44 20  R $(TH .?) $(TD 
4980: 28 74 2c 20 73 29 29 20 24 28 54 44 20 e3 83 86  (t, s)) $(TD ...
4990: e3 83 bc e3 83 96 e3 83 ab 20 74 20 e3 81 ab e5  ......... t ....
49a0: 90 8d e5 89 8d 20 73 20 e3 81 ae e3 83 95 e3 82  ..... s ........
49b0: a3 e3 83 bc e3 83 ab e3 83 89 e3 81 8c e3 81 82  ................
49c0: e3 82 8c e3 81 b0 20 31 e3 80 81 e3 81 aa e3 81  ...... 1........
49d0: 91 e3 82 8c e3 81 b0 20 30 29 29 0a 20 20 20 20  ....... 0)).    
49e0: 24 28 54 52 20 24 28 54 48 20 2e 3d 29 20 24 28  $(TR $(TH .=) $(
49f0: 54 44 20 28 74 2c 20 73 2c 20 76 29 29 20 24 28  TD (t, s, v)) $(
4a00: 54 44 20 e3 83 86 e3 83 bc e3 83 96 e3 83 ab 20  TD ............ 
4a10: 74 20 e3 82 92 e8 a6 aa e3 81 ab e6 8c 81 e3 81  t ..............
4a20: a1 e3 80 81 e5 90 8d e5 89 8d 20 73 20 e3 81 ae  .......... s ...
4a30: e3 83 95 e3 82 a3 e3 83 bc e3 83 ab e3 83 89 e3  ................
4a40: 81 ab 20 76 20 e3 81 8c e5 85 a5 e3 81 a3 e3 81  .. v ...........
4a50: 9f e3 83 86 e3 83 bc e3 83 96 e3 83 ab e3 82 92  ................
4a60: e4 bd 9c e3 82 8b 29 29 0a 20 20 29 0a 29 29 0a  ......)).  ).)).
4a70: 3c 62 72 20 2f 3e 0a 0a 24 28 53 45 43 54 49 4f  <br />..$(SECTIO
4a80: 4e 20 e5 88 b6 e5 be a1 e3 83 95 e3 83 ad e3 83  N ..............
4a90: bc 2c 20 24 28 53 45 43 42 4f 44 59 0a 20 20 24  ., $(SECBODY.  $
4aa0: 28 54 41 42 4c 45 0a 20 20 20 20 24 28 54 52 20  (TABLE.    $(TR 
4ab0: 24 28 54 48 20 69 66 29 20 24 28 54 44 20 28 6e  $(TH if) $(TD (n
4ac0: 2c 20 66 74 2c 20 66 65 29 29 20 24 28 54 44 20  , ft, fe)) $(TD 
4ad0: 6e 20 e3 81 8c e9 9d 9e 20 30 20 e3 81 aa e3 82  n ...... 0 .....
4ae0: 89 20 3c 74 74 3e 66 74 28 29 3c 2f 74 3e e3 80  . <tt>ft()</t>..
4af0: 81 30 20 e3 81 aa e3 82 89 20 3c 74 74 3e 66 65  .0 ...... <tt>fe
4b00: 28 29 3c 2f 74 74 3e 20 e3 82 92 e5 ae 9f e8 a1  ()</tt> ........
4b10: 8c 29 29 0a 20 20 29 0a 29 29 0a 3c 62 72 20 2f  .)).  ).)).<br /
4b20: 3e 0a 0a 24 28 53 45 43 54 49 4f 4e 20 e6 bc 94  >..$(SECTION ...
4b30: e7 ae 97 2c 20 24 28 53 45 43 42 4f 44 59 0a 20  ..., $(SECBODY. 
4b40: 20 24 28 54 41 42 4c 45 0a 20 20 20 20 24 28 54   $(TABLE.    $(T
4b50: 52 20 24 28 54 48 20 2b 29 20 24 28 54 44 20 28  R $(TH +) $(TD (
4b60: 6e 2c 20 6d 29 29 20 24 28 54 44 20 e6 95 b4 e6  n, m)) $(TD ....
4b70: 95 b0 20 6e 20 e3 81 a8 e6 95 b4 e6 95 b0 20 6d  .. n ......... m
4b80: 20 e3 82 92 e8 b6 b3 e3 81 97 e3 81 a6 e8 bf 94   ...............
4b90: e3 81 99 29 29 0a 20 20 20 20 24 28 54 52 20 24  ...)).    $(TR $
4ba0: 28 54 48 20 2d 29 20 24 28 54 44 20 28 6e 2c 20  (TH -) $(TD (n, 
4bb0: 6d 29 29 20 24 28 54 44 20 e6 95 b4 e6 95 b0 e3  m)) $(TD .......
4bc0: 81 ae e5 bc 95 e3 81 8d e7 ae 97 29 29 0a 20 20  ...........)).  
4bd0: 20 20 24 28 54 52 20 24 28 54 48 20 2a 29 20 24    $(TR $(TH *) $
4be0: 28 54 44 20 28 6e 2c 20 6d 29 29 20 24 28 54 44  (TD (n, m)) $(TD
4bf0: 20 e6 95 b4 e6 95 b0 e3 81 ae e6 8e 9b e3 81 91   ...............
4c00: e7 ae 97 29 29 0a 20 20 20 20 24 28 54 52 20 24  ...)).    $(TR $
4c10: 28 54 48 20 2f 29 20 24 28 54 44 20 28 6e 2c 20  (TH /) $(TD (n, 
4c20: 6d 29 29 20 24 28 54 44 20 e6 95 b4 e6 95 b0 e3  m)) $(TD .......
4c30: 81 ae e5 89 b2 e3 82 8a e7 ae 97 29 29 0a 20 20  ...........)).  
4c40: 20 20 24 28 54 52 20 24 28 54 48 20 25 29 20 24    $(TR $(TH %) $
4c50: 28 54 44 20 28 6e 2c 20 6d 29 29 20 24 28 54 44  (TD (n, m)) $(TD
4c60: 20 e6 95 b4 e6 95 b0 e3 81 ae e5 89 b0 e4 bd 99   ...............
4c70: 29 29 0a 20 20 20 20 24 28 54 52 20 24 28 54 48  )).    $(TR $(TH
4c80: 20 26 61 6d 70 3b 26 61 6d 70 3b 29 20 24 28 54   &amp;&amp;) $(T
4c90: 44 20 28 6e 2c 20 6d 29 29 20 24 28 54 44 20 e6  D (n, m)) $(TD .
4ca0: 95 b4 e6 95 b0 20 6e 20 e3 81 a8 20 6d 20 e3 81  ..... n ... m ..
4cb0: 8c e4 b8 a1 e6 96 b9 e9 9d 9e 20 30 20 e3 81 aa  .......... 0 ...
4cc0: e3 82 89 20 31 e3 80 81 e3 81 9d e3 82 8c e4 bb  ... 1...........
4cd0: a5 e5 a4 96 e3 81 a7 e3 81 af 20 30 29 29 0a 20  .......... 0)). 
4ce0: 20 20 20 24 28 54 52 20 24 28 54 48 20 7c 7c 29     $(TR $(TH ||)
4cf0: 20 24 28 54 44 20 28 6e 2c 20 6d 29 29 20 24 28   $(TD (n, m)) $(
4d00: 54 44 20 e6 95 b4 e6 95 b0 20 6e 20 e3 81 a8 20  TD ...... n ... 
4d10: 6d 20 e3 81 8c e3 81 a9 e3 81 a1 e3 82 89 e3 81  m ..............
4d20: 8b e9 9d 9e 20 30 20 e3 81 aa e3 82 89 20 31 e3  .... 0 ...... 1.
4d30: 80 81 e3 81 9d e3 82 8c e4 bb a5 e5 a4 96 e3 81  ................
4d40: a7 e3 81 af 20 30 29 29 0a 20 20 20 20 24 28 54  .... 0)).    $(T
4d50: 52 20 24 28 54 48 20 7e 29 20 24 28 54 44 20 28  R $(TH ~) $(TD (
4d60: 61 2c 20 62 29 29 20 24 28 54 44 20 61 20 e3 81  a, b)) $(TD a ..
4d70: a8 20 62 20 e3 82 92 e6 96 87 e5 ad 97 e5 88 97  . b ............
4d80: e5 8c 96 e3 81 97 e3 81 a6 e7 b5 90 e5 90 88 29  ...............)
4d90: 29 0a 20 20 20 20 24 28 54 52 20 24 28 54 48 20  ).    $(TR $(TH 
4da0: 26 6c 74 3b 29 20 24 28 54 44 20 28 61 2c 20 62  &lt;) $(TD (a, b
4db0: 29 29 20 24 28 54 44 20 61 20 e3 81 a8 20 62 20  )) $(TD a ... b 
4dc0: e3 82 92 e6 af 94 e8 bc 83 29 29 0a 20 20 20 20  .........)).    
4dd0: 24 28 54 52 20 24 28 54 48 20 26 6c 74 3b 3d 29  $(TR $(TH &lt;=)
4de0: 20 24 28 54 44 20 28 61 2c 20 62 29 29 20 24 28   $(TD (a, b)) $(
4df0: 54 44 20 61 20 e3 81 a8 20 62 20 e3 82 92 e6 af  TD a ... b .....
4e00: 94 e8 bc 83 29 29 0a 20 20 20 20 24 28 54 52 20  ....)).    $(TR 
4e10: 24 28 54 48 20 26 67 74 3b 29 20 24 28 54 44 20  $(TH &gt;) $(TD 
4e20: 28 61 2c 20 62 29 29 20 24 28 54 44 20 61 20 e3  (a, b)) $(TD a .
4e30: 81 a8 20 62 20 e3 82 92 e6 af 94 e8 bc 83 29 29  .. b .........))
4e40: 0a 20 20 20 20 24 28 54 52 20 24 28 54 48 20 26  .    $(TR $(TH &
4e50: 67 74 3b 3d 29 20 24 28 54 44 20 28 61 2c 20 62  gt;=) $(TD (a, b
4e60: 29 29 20 24 28 54 44 20 61 20 e3 81 a8 20 62 20  )) $(TD a ... b 
4e70: e3 82 92 e6 af 94 e8 bc 83 29 29 0a 20 20 20 20  .........)).    
4e80: 24 28 54 52 20 24 28 54 48 20 3d 3d 29 20 24 28  $(TR $(TH ==) $(
4e90: 54 44 20 28 61 2c 20 62 29 29 20 24 28 54 44 20  TD (a, b)) $(TD 
4ea0: 61 20 e3 81 a8 20 62 20 e3 82 92 e6 af 94 e8 bc  a ... b ........
4eb0: 83 29 29 0a 20 20 20 20 24 28 54 52 20 24 28 54  .)).    $(TR $(T
4ec0: 48 20 21 3d 29 20 24 28 54 44 20 28 61 2c 20 62  H !=) $(TD (a, b
4ed0: 29 29 20 24 28 54 44 20 61 20 e3 81 a8 20 62 20  )) $(TD a ... b 
4ee0: e3 82 92 e6 af 94 e8 bc 83 29 29 0a 20 20 29 0a  .........)).  ).
4ef0: 3c 70 3e 0a e6 b3 a8 e6 84 8f e7 82 b9 e3 81 a8  <p>.............
4f00: e3 81 97 e3 81 a6 e3 80 81 e4 bd 9c e8 80 85 e3  ................
4f10: 81 ae e8 b6 a3 e5 91 b3 e3 81 ae e5 95 8f e9 a1  ................
4f20: 8c e3 81 a7 e3 80 81 3c 74 74 3e 26 61 6d 70 3b  .......<tt>&amp;
4f30: 26 61 6d 70 3b 3c 2f 74 74 3e 20 e3 81 a8 20 3c  &amp;</tt> ... <
4f40: 74 74 3e 7c 7c 3c 2f 74 74 3e 20 e3 81 af 20 73  tt>||</tt> ... s
4f50: 68 6f 72 74 2d 63 69 72 63 75 69 74 20 e8 a9 95  hort-circuit ...
4f60: e4 be a1 e3 82 92 e3 81 97 e3 81 be e3 81 9b e3  ................
4f70: 82 93 e3 80 82 0a e6 95 b4 e6 95 b0 e6 bc 94 e7  ................
4f80: ae 97 e3 81 ae e7 a8 ae e9 a1 9e e3 81 8c e5 b0  ................
4f90: 91 e3 81 aa e3 81 84 e3 81 ae e3 81 af e3 80 81  ................
4fa0: 44 20 e8 a8 80 e8 aa 9e e3 81 ae 20 73 74 64 2e  D ......... std.
4fb0: 62 69 67 69 6e 74 20 e3 81 8c e3 83 93 e3 83 83  bigint .........
4fc0: e3 83 88 e6 bc 94 e7 ae 97 e3 81 aa e3 81 a9 e3  ................
4fd0: 82 92 e3 82 b5 e3 83 9d e3 83 bc e3 83 88 e3 81  ................
4fe0: 97 e3 81 a6 e3 81 aa e3 81 84 e3 81 9f e3 82 81  ................
4ff0: e3 81 a7 e3 81 99 e3 80 82 0a e6 96 87 e5 ad 97  ................
5000: e5 88 97 e3 81 8c e7 b5 90 e5 90 88 e3 81 97 e3  ................
5010: 81 8b e3 81 a7 e3 81 8d e3 81 aa e3 81 84 e3 81  ................
5020: ae e3 81 af e3 80 81 e5 8d 98 e3 81 ab e6 89 8b  ................
5030: e6 8a 9c e3 81 8d e3 81 a7 e3 81 99 e3 80 82 0a  ................
5040: 3c 2f 70 3e 0a 29 29 0a 0a 24 28 53 45 43 54 49  </p>.))..$(SECTI
5050: 4f 4e 20 e5 a4 96 e9 83 a8 e3 81 a8 e3 81 ae e3  ON .............
5060: 82 84 e3 82 8a e3 81 a8 e3 82 8a 2c 20 24 28 53  ..........., $(S
5070: 45 43 42 4f 44 59 0a 20 20 24 28 54 41 42 4c 45  ECBODY.  $(TABLE
5080: 0a 20 20 20 20 24 28 54 52 20 24 28 54 48 20 70  .    $(TR $(TH p
5090: 72 69 6e 74 29 20 24 28 54 44 20 28 61 29 29 20  rint) $(TD (a)) 
50a0: 24 28 54 44 20 61 20 e3 82 92 e6 96 87 e5 ad 97  $(TD a .........
50b0: e5 88 97 e5 8c 96 e6 a8 99 e6 ba 96 e5 87 ba e5  ................
50c0: 8a 9b e3 81 ab e6 94 b9 e8 a1 8c e4 bb 98 e3 81  ................
50d0: 8d e3 81 a7 e8 a1 a8 e7 a4 ba 29 29 0a 20 20 20  ..........)).   
50e0: 20 24 28 54 52 20 24 28 54 48 20 61 72 67 76 29   $(TR $(TH argv)
50f0: 20 24 28 54 44 20 29 20 24 28 54 44 20 e3 82 b9   $(TD ) $(TD ...
5100: e3 82 af e3 83 aa e3 83 97 e3 83 88 e3 81 ab e6  ................
5110: b8 a1 e3 81 95 e3 82 8c e3 81 9f e5 bc 95 e6 95  ................
5120: b0 e6 96 87 e5 ad 97 e5 88 97 e3 81 ae 63 6f 6e  .............con
5130: 73 e3 83 aa e3 82 b9 e3 83 88 29 29 0a 20 20 29  s.........)).  )
5140: 0a 29 29 0a 3c 62 72 20 2f 3e 0a 0a 24 28 53 45  .)).<br />..$(SE
5150: 43 54 49 4f 4e 20 e3 83 87 e3 83 bc e3 82 bf e5  CTION ..........
5160: 9e 8b e5 88 a4 e5 ae 9a 2c 20 24 28 53 45 43 42  ........, $(SECB
5170: 4f 44 59 0a 20 20 24 28 54 41 42 4c 45 0a 20 20  ODY.  $(TABLE.  
5180: 20 20 24 28 54 52 20 24 28 54 48 20 5f 69 73 69    $(TR $(TH _isi
5190: 6e 74 29 20 24 28 54 44 20 28 61 29 29 20 24 28  nt) $(TD (a)) $(
51a0: 54 44 20 61 20 e3 81 8c e6 95 b4 e6 95 b0 e3 81  TD a ...........
51b0: aa e3 82 89 20 31 e3 80 81 e3 81 a7 e3 81 aa e3  .... 1..........
51c0: 81 91 e3 82 8c e3 81 b0 20 30 29 29 0a 20 20 20  ........ 0)).   
51d0: 20 24 28 54 52 20 24 28 54 48 20 5f 69 73 73 74   $(TR $(TH _isst
51e0: 72 29 20 24 28 54 44 20 28 61 29 29 20 24 28 54  r) $(TD (a)) $(T
51f0: 44 20 61 20 e3 81 8c e6 96 87 e5 ad 97 e5 88 97  D a ............
5200: e3 81 aa e3 82 89 20 31 e3 80 81 e3 81 a7 e3 81  ...... 1........
5210: aa e3 81 91 e3 82 8c e3 81 b0 20 30 29 29 0a 20  .......... 0)). 
5220: 20 20 20 24 28 54 52 20 24 28 54 48 20 5f 69 73     $(TR $(TH _is
5230: 66 75 6e 29 20 24 28 54 44 20 28 61 29 29 20 24  fun) $(TD (a)) $
5240: 28 54 44 20 61 20 e3 81 8c e9 96 a2 e6 95 b0 e3  (TD a ..........
5250: 81 aa e3 82 89 20 31 e3 80 81 e3 81 a7 e3 81 aa  ..... 1.........
5260: e3 81 91 e3 82 8c e3 81 b0 20 30 29 29 0a 20 20  ......... 0)).  
5270: 20 20 24 28 54 52 20 24 28 54 48 20 5f 69 73 74    $(TR $(TH _ist
5280: 61 62 6c 65 29 20 24 28 54 44 20 28 61 29 29 20  able) $(TD (a)) 
5290: 24 28 54 44 20 61 20 e3 81 8c e3 83 86 e3 83 bc  $(TD a .........
52a0: e3 83 96 e3 83 ab e3 81 aa e3 82 89 20 31 e3 80  ............ 1..
52b0: 81 e3 81 a7 e3 81 aa e3 81 91 e3 82 8c e3 81 b0  ................
52c0: 20 30 29 29 0a 20 20 20 20 24 28 54 52 20 24 28   0)).    $(TR $(
52d0: 54 48 20 5f 69 73 75 6e 64 65 66 69 6e 65 64 29  TH _isundefined)
52e0: 20 24 28 54 44 20 28 61 29 29 20 24 28 54 44 20   $(TD (a)) $(TD 
52f0: 61 20 e3 81 8c e6 9c aa e5 ae 9a e7 be a9 e5 80  a ..............
5300: a4 e3 81 aa e3 82 89 20 31 e3 80 81 e3 81 a7 e3  ....... 1.......
5310: 81 aa e3 81 91 e3 82 8c e3 81 b0 20 30 29 29 0a  ........... 0)).
5320: 20 20 29 0a 29 29 0a 29 0a 29 29 0a 0a 29 0a 4d    ).)).).))..).M
5330: 61 63 72 6f 73 3a 0a 20 20 20 20 54 49 54 4c 45  acros:.    TITLE
5340: 3d 50 6f 6c 65 6d 79 20 52 65 66 65 72 65 6e 63  =Polemy Referenc
5350: 65 20 4d 61 6e 75 61 6c 0a 20 20 20 20 44 4f 43  e Manual.    DOC
5360: 46 49 4c 45 4e 41 4d 45 3d 69 6e 64 65 78 2e 68  FILENAME=index.h
5370: 74 6d 6c 0a 20 20 20 20 53 45 43 54 49 4f 4e 3d  tml.    SECTION=
5380: 24 28 44 44 4f 43 5f 44 45 43 4c 20 24 28 44 44  $(DDOC_DECL $(DD
5390: 4f 43 5f 50 53 59 4d 42 4f 4c 20 24 31 29 29 20  OC_PSYMBOL $1)) 
53a0: 24 28 44 44 4f 43 5f 44 45 43 4c 5f 44 44 20 24  $(DDOC_DECL_DD $
53b0: 32 29 0a 20 20 20 20 53 45 43 42 4f 44 59 3d 24  2).    SECBODY=$
53c0: 30 0a                                            0.