Hex Artifact Content
Not logged in

Artifact b4c241e12eddc95c664dbcd8246545db82194781:


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 75 6e 64 65 66 69 6e 65 64 e3 80 82 e7 89   (undefined.....
1cc0: b9 e6 ae 8a e3 81 aa e3 82 b1 e3 83 bc e3 82 b9  ................
1cd0: e3 81 a7 e4 bd 9c e3 82 89 e3 82 8c e3 81 be e3  ................
1ce0: 81 99 29 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 3c  ..)</li>.</ul>.<
1cf0: 70 3e 0a e9 96 a2 e6 95 b0 e3 81 af e3 81 84 e3  p>..............
1d00: 82 8f e3 82 86 e3 82 8b e3 80 8c e3 82 af e3 83  ................
1d10: ad e3 83 bc e3 82 b8 e3 83 a3 e3 80 8d e3 81 a7  ................
1d20: e3 81 99 e3 80 82 e9 9d 99 e7 9a 84 e3 82 b9 e3  ................
1d30: 82 b3 e3 83 bc e3 83 97 e3 81 a7 e5 a4 96 e5 81  ................
1d40: b4 e3 81 ae e7 92 b0 e5 a2 83 e3 81 ab e3 82 a2  ................
1d50: e3 82 af e3 82 bb e3 82 b9 e3 81 a7 e3 81 8d e3  ................
1d60: 81 be e3 81 99 e3 80 82 0a e3 83 86 e3 83 bc e3  ................
1d70: 83 96 e3 83 ab e3 81 af e3 81 84 e3 82 8f e3 82  ................
1d80: 86 e3 82 8b e3 83 97 e3 83 ad e3 83 88 e3 82 bf  ................
1d90: e3 82 a4 e3 83 97 e3 83 81 e3 82 a7 e3 83 bc e3  ................
1da0: 83 b3 e3 82 92 e6 8c 81 e3 81 a3 e3 81 a6 e3 81  ................
1db0: 84 e3 81 a6 e3 80 81 0a e8 87 aa e5 88 86 e3 81  ................
1dc0: ab e3 81 aa e3 81 84 e3 83 95 e3 82 a3 e3 83 bc  ................
1dd0: e3 83 ab e3 83 89 e3 81 ae e5 a0 b4 e5 90 88 e3  ................
1de0: 81 af e8 a6 aa e3 81 ab e5 95 8f e3 81 84 e5 90  ................
1df0: 88 e3 82 8f e3 81 9b e3 81 8c e8 a1 8c e3 81 8f  ................
1e00: e6 84 9f e3 81 98 e3 81 ab e3 81 aa e3 81 a3 e3  ................
1e10: 81 a6 e3 81 84 e3 81 be e3 81 99 e3 81 8c e3 80  ................
1e20: 81 0a e3 83 95 e3 82 a3 e3 83 bc e3 83 ab e3 83  ................
1e30: 89 e3 81 ae e6 9b b8 e3 81 8d e6 8f 9b e3 81 88  ................
1e40: e3 81 8c e3 81 aa e3 81 84 e3 81 ae e3 81 a7 e3  ................
1e50: 80 81 e3 81 93 e3 82 8c e3 81 af e7 89 b9 e3 81  ................
1e60: ab e6 84 8f e5 91 b3 e3 81 aa e3 81 84 e3 81 8b  ................
1e70: e3 82 82 e3 81 97 e3 82 8c e3 81 aa e3 81 84 e2  ................
1e80: 80 a6 e3 80 82 0a 3c 2f 70 3e 0a 3c 70 3e 0a e3  ......</p>.<p>..
1e90: 81 be e3 81 9f e3 80 81 e3 83 aa e3 82 b9 e3 83  ................
1ea0: 88 e3 82 92 e6 89 b1 e3 81 86 e3 81 9f e3 82 81  ................
1eb0: e3 81 ab e3 80 81 e3 81 84 e3 82 8f e3 82 86 e3  ................
1ec0: 82 8b e3 80 8c 63 6f 6e 73 20 e3 83 aa e3 82 b9  .....cons ......
1ed0: e3 83 88 e3 80 8d e3 82 92 e4 bd bf e3 81 84 e3  ................
1ee0: 81 be e3 81 99 e3 80 82 0a e7 a9 ba e3 83 aa e3  ................
1ef0: 82 b9 e3 83 88 e3 82 92 20 3c 74 74 3e 7b 7d 3c  ........ <tt>{}<
1f00: 2f 74 74 3e e3 80 81 ef bc 91 e5 80 8b e4 bb a5  /tt>............
1f10: e4 b8 8a e8 a6 81 e7 b4 a0 e3 81 8c e3 81 82 e3  ................
1f20: 82 8b e3 82 82 e3 81 ae e3 82 92 20 3c 74 74 3e  ........... <tt>
1f30: 7b 63 61 72 3a 20 e5 85 88 e9 a0 ad e8 a6 81 e7  {car: ..........
1f40: b4 a0 2c 20 63 64 72 3a 20 e4 ba 8c e7 95 aa e7  .., cdr: .......
1f50: 9b ae e4 bb a5 e9 99 8d e3 81 ae e3 83 aa e3 82  ................
1f60: b9 e3 83 88 7d 3c 2f 74 74 3e 0a e3 81 a8 e3 81  ....}</tt>......
1f70: 84 e3 81 86 e5 bd a2 e3 81 a7 e3 80 82 e3 81 93  ................
1f80: e3 81 ae e5 bd a2 e3 81 a7 e3 83 aa e3 82 b9 e3  ................
1f90: 83 88 e3 82 92 e6 89 b1 e3 82 8f e3 81 aa e3 81  ................
1fa0: 91 e3 82 8c e3 81 b0 e3 81 aa e3 82 89 e3 81 aa  ................
1fb0: e3 81 84 e3 81 a8 e3 81 84 e3 81 86 e6 b1 ba e3  ................
1fc0: 81 be e3 82 8a e3 81 af e3 81 82 e3 82 8a e3 81  ................
1fd0: be e3 81 9b e3 82 93 e3 81 8c e3 80 81 0a e3 81  ................
1fe0: 93 e3 81 ae e5 bd a2 e3 81 af e7 89 b9 e5 88 a5  ................
1ff0: e6 89 b1 e3 81 84 e3 81 95 e3 82 8c e3 81 a6 20  ............... 
2000: 3c 74 74 3e 70 72 69 6e 74 3c 2f 74 74 3e 20 e3  <tt>print</tt> .
2010: 81 a7 e7 b6 ba e9 ba 97 e3 81 ab e5 87 ba e5 8a  ................
2020: 9b e3 81 95 e3 82 8c e3 81 9f e3 82 8a e3 81 97  ................
2030: e3 81 be e3 81 99 e3 80 82 0a 3c 2f 70 3e 0a 29  ..........</p>.)
2040: 29 0a 24 28 53 45 43 54 49 4f 4e 20 e3 83 91 e3  ).$(SECTION ....
2050: 82 bf e3 83 bc e3 83 b3 e3 83 9e e3 83 83 e3 83  ................
2060: 81 2c 20 24 28 53 45 43 42 4f 44 59 0a 3c 70 3e  ., $(SECBODY.<p>
2070: 0a e9 81 a9 e5 bd 93 e3 81 ab e5 ae 9f e8 a3 85  ................
2080: e3 81 95 e3 82 8c e3 81 9f e3 83 91 e3 82 bf e3  ................
2090: 83 bc e3 83 b3 e3 83 9e e3 83 83 e3 83 81 e3 81  ................
20a0: 8c e3 81 82 e3 82 8a e3 81 be e3 81 99 e3 80 82  ................
20b0: 0a e3 83 aa e3 82 b9 e3 83 88 e3 81 ae 20 32 6e  ............. 2n
20c0: 20 e7 95 aa e7 9b ae e3 81 a8 20 32 6e 2b 31 20   ......... 2n+1 
20d0: e7 95 aa e7 9b ae e3 82 92 e8 b6 b3 e3 81 97 e3  ................
20e0: 81 a6 e9 95 b7 e3 81 95 e3 82 92 e5 8d 8a e5 88  ................
20f0: 86 e3 81 ab e3 81 99 e3 82 8b e9 96 a2 e6 95 b0  ................
2100: ef bc 9a 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 0a 20  ....</p>.<pre>. 
2110: 20 20 20 64 65 66 20 61 64 6a 53 75 6d 28 6c 73     def adjSum(ls
2120: 74 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 63  t).    {.      c
2130: 61 73 65 28 20 6c 73 74 20 29 0a 20 20 20 20 20  ase( lst ).     
2140: 20 20 20 77 68 65 6e 28 20 7b 63 61 72 3a 78 2c     when( {car:x,
2150: 20 63 64 72 3a 7b 63 61 72 3a 20 79 2c 20 63 64   cdr:{car: y, cd
2160: 72 3a 7a 7d 7d 20 29 20 7b 20 7b 63 61 72 3a 20  r:z}} ) { {car: 
2170: 78 2b 79 2c 20 63 64 72 3a 20 61 64 6a 53 75 6d  x+y, cdr: adjSum
2180: 28 7a 29 7d 20 7d 0a 20 20 20 20 20 20 20 20 77  (z)} }.        w
2190: 68 65 6e 28 20 7b 63 61 72 3a 78 2c 20 63 64 72  hen( {car:x, cdr
21a0: 3a 7b 7d 7d 20 29 20 7b 20 6c 73 74 20 7d 0a 20  :{}} ) { lst }. 
21b0: 20 20 20 20 20 20 20 77 68 65 6e 28 20 7b 7d 20         when( {} 
21c0: 29 20 7b 20 7b 7d 20 7d 0a 20 20 20 20 7d 0a 3c  ) { {} }.    }.<
21d0: 2f 70 72 65 3e 0a 3c 70 3e 0a e5 8b 95 e3 81 8b  /pre>.<p>.......
21e0: e3 81 99 e3 81 a8 e3 81 8d e3 81 ab e3 81 af e3  ................
21f0: 80 81 e5 87 a6 e7 90 86 e7 b3 bb e3 81 8c e3 81  ................
2200: 9d e3 82 8c e3 81 a3 e3 81 bd e3 81 84 20 69 66  ............. if
2210: 2d 74 68 65 6e 2d 65 6c 73 65 20 e3 81 ab e5 b1  -then-else .....
2220: 95 e9 96 8b e3 81 97 e3 81 a6 e3 81 84 e3 81 be  ................
2230: e3 81 99 e3 80 82 0a 3c 74 74 3e 77 68 65 6e 3c  .......<tt>when<
2240: 2f 74 74 3e 20 e3 82 92 e4 b8 8a e3 81 8b e3 82  /tt> ...........
2250: 89 e8 a9 a6 e3 81 97 e3 81 a6 e3 81 84 e3 81 a3  ................
2260: e3 81 a6 e3 80 81 e6 9c 80 e5 88 9d e3 81 ab e3  ................
2270: 83 9e e3 83 83 e3 83 81 e3 81 97 e3 81 9f e3 81  ................
2280: a8 e3 81 93 e3 82 8d e3 82 92 e5 ae 9f e8 a1 8c  ................
2290: e3 81 97 e3 81 be e3 81 99 e3 80 82 0a 3c 2f 70  .............</p
22a0: 3e 0a 3c 70 72 65 3e 0a 20 20 20 50 41 54 20 3a  >.<pre>.   PAT :
22b0: 3a 3d 20 22 5f 22 20 20 20 20 20 20 20 20 20 20  := "_"          
22c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d0: 20 20 20 20 20 20 20 20 20 20 20 20 24 28 44 5f              $(D_
22e0: 43 4f 4d 4d 45 4e 54 20 23 20 e3 83 af e3 82 a4  COMMENT # ......
22f0: e3 83 ab e3 83 89 e3 82 ab e3 83 bc e3 83 89 29  ...............)
2300: 0a 20 20 20 20 20 20 20 20 20 7c 20 49 44 20 20  .         | ID  
2310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2330: 20 20 20 20 20 24 28 44 5f 43 4f 4d 4d 45 4e 54       $(D_COMMENT
2340: 20 23 20 e5 a4 89 e6 95 b0 e3 83 91 e3 82 bf e3   # .............
2350: 83 bc e3 83 b3 29 0a 20 20 20 20 20 20 20 20 20  .....).         
2360: 7c 20 22 7b 22 20 49 44 20 22 3a 22 20 50 41 54  | "{" ID ":" PAT
2370: 20 22 2c 22 20 2e 2e 2e 20 22 2c 22 20 49 44 20   "," ... "," ID 
2380: 3a 20 50 41 54 20 22 7d 22 20 20 24 28 44 5f 43  : PAT "}"  $(D_C
2390: 4f 4d 4d 45 4e 54 20 23 20 e3 83 86 e3 83 bc e3  OMMENT # .......
23a0: 83 96 e3 83 ab e3 83 91 e3 82 bf e3 83 bc e3 83  ................
23b0: b3 29 0a 20 20 20 20 20 20 20 20 20 7c 20 45 20  .).         | E 
23c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e0: 20 20 20 20 20 20 20 24 28 44 5f 43 4f 4d 4d 45         $(D_COMME
23f0: 4e 54 20 23 20 e5 80 a4 e3 83 91 e3 82 bf e3 83  NT # ...........
2400: bc e3 83 b3 29 0a 3c 2f 70 72 65 3e 0a 3c 70 3e  ....).</pre>.<p>
2410: 0a e5 a4 89 e6 95 b0 e3 83 91 e3 82 bf e3 83 bc  ................
2420: e3 83 b3 e3 81 af e5 b8 b8 e3 81 ab e3 83 9e e3  ................
2430: 83 83 e3 83 81 e3 81 97 e3 81 a6 e3 80 81 e5 80  ................
2440: a4 e3 82 92 e3 81 9d e3 81 ae e5 a4 89 e6 95 b0  ................
2450: e3 81 ab e6 9d 9f e7 b8 9b e3 81 97 e3 81 be e3  ................
2460: 81 99 e3 80 82 0a e3 83 af e3 82 a4 e3 83 ab e3  ................
2470: 83 89 e3 82 ab e3 83 bc e3 83 89 e3 82 82 e5 b8  ................
2480: b8 e3 81 ab e3 83 9e e3 83 83 e3 83 81 e3 81 97  ................
2490: e3 81 be e3 81 99 e3 81 8c e3 80 81 e5 a4 89 e6  ................
24a0: 95 b0 e6 9d 9f e7 b8 9b e3 81 97 e3 81 be e3 81  ................
24b0: 9b e3 82 93 e3 80 82 0a e5 80 a4 e3 83 91 e3 82  ................
24c0: bf e3 83 bc e3 83 b3 e3 81 af e3 80 81 e4 bb bb  ................
24d0: e6 84 8f e3 81 ae e5 bc 8f e3 81 8c e6 9b b8 e3  ................
24e0: 81 91 e3 81 be e3 81 99 e3 80 82 e3 81 9d e3 81  ................
24f0: ae e5 bc 8f e3 82 92 e8 a9 95 e4 be a1 e3 81 97  ................
2500: e3 81 9f e7 b5 90 e6 9e 9c e3 81 a8 20 3c 74 74  ............ <tt
2510: 3e 3d 3d 3c 2f 74 74 3e 20 e3 81 aa e3 82 89 e3  >==</tt> .......
2520: 83 9e e3 83 83 e3 83 81 e3 81 97 e3 81 be e3 81  ................
2530: 99 e3 80 82 0a e5 a4 96 e3 81 a7 e6 9d 9f e7 b8  ................
2540: 9b e3 81 95 e3 82 8c e3 81 9f e5 a4 89 e6 95 b0  ................
2550: e3 82 92 e5 80 a4 e3 83 91 e3 82 bf e3 83 bc e3  ................
2560: 83 b3 e3 81 a8 e3 81 97 e3 81 a6 e9 85 8d e7 bd  ................
2570: ae e3 80 81 e3 81 af e7 9b b4 e6 8e a5 e3 81 af  ................
2580: e3 81 a7 e3 81 8d e3 81 aa e3 81 84 e3 81 ae e3  ................
2590: 81 a7 0a 3c 2f 70 3e 0a 3c 70 72 65 3e 0a 20 20  ...</p>.<pre>.  
25a0: 20 76 61 72 20 78 20 3d 20 31 32 33 3b 0a 20 20   var x = 123;.  
25b0: 20 63 61 73 65 28 20 66 6f 6f 20 29 0a 20 20 20   case( foo ).   
25c0: 20 20 77 68 65 6e 28 20 7b 76 61 6c 3a 20 78 2b    when( {val: x+
25d0: 30 7d 20 29 20 7b 20 2e 2e 2e 20 7d 20 24 28 44  0} ) { ... } $(D
25e0: 5f 43 4f 4d 4d 45 4e 54 20 23 20 e3 81 93 e3 82  _COMMENT # .....
25f0: 8c e3 81 af e4 bb bb e6 84 8f e3 81 ae 20 7b 76  ............. {v
2600: 61 6c 3a 31 32 33 7d 20 e3 81 a8 e5 90 8c e3 81  al:123} ........
2610: 98 29 0a 20 20 20 20 20 77 68 65 6e 28 20 7b 76  .).     when( {v
2620: 61 6c 3a 20 78 7d 20 29 20 7b 20 2e 2e 2e 20 7d  al: x} ) { ... }
2630: 20 20 20 24 28 44 5f 43 4f 4d 4d 45 4e 54 20 23     $(D_COMMENT #
2640: 20 e3 81 93 e3 82 8c e3 81 af e4 bb bb e6 84 8f   ...............
2650: e3 81 ae 20 66 6f 6f 2e 3f 76 61 6c 20 e3 81 aa  ... foo.?val ...
2660: e3 82 89 e5 b8 b8 e3 81 ab e3 83 9e e3 83 83 e3  ................
2670: 83 81 29 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a e9  ..).</pre>.<p>..
2680: 81 a9 e5 bd 93 e3 81 ab e3 81 a1 e3 82 87 e3 81  ................
2690: a3 e3 81 a8 e8 a4 87 e9 9b 91 e3 81 aa e5 bc 8f  ................
26a0: e3 81 ab e3 81 97 e3 81 a6 e3 82 84 e3 82 8b e3  ................
26b0: 81 a8 e3 82 88 e3 81 84 e3 81 8b e3 82 82 ef bc  ................
26c0: 88 e8 a3 8f e6 8a 80 ef bc 89 e3 80 82 0a 3c 2f  ..............</
26d0: 70 3e 0a 3c 70 3e 0a e3 83 86 e3 83 bc e3 83 96  p>.<p>..........
26e0: e3 83 ab e3 83 91 e3 82 bf e3 83 bc e3 83 b3 e3  ................
26f0: 81 af e3 80 81 e6 9b b8 e3 81 8b e3 82 8c e3 81  ................
2700: 9f e3 82 ad e3 83 bc e3 81 8c e5 85 a8 e3 81 a6  ................
2710: e3 81 82 e3 82 8c e3 81 b0 e3 83 9e e3 83 83 e3  ................
2720: 83 81 e3 81 97 e3 81 be e3 81 99 e3 80 82 0a 3c  ...............<
2730: 74 74 3e 7b 61 3a 20 5f 7d 3c 2f 74 74 3e 20 e3  tt>{a: _}</tt> .
2740: 81 af e3 80 81 3c 74 74 3e 2e 61 3c 2f 74 74 3e  .....<tt>.a</tt>
2750: 20 e3 82 92 e6 8c 81 e3 81 a3 e3 81 a6 e3 81 95   ...............
2760: e3 81 88 e3 81 84 e3 82 8c e3 81 b0 e3 83 9e e3  ................
2770: 83 83 e3 83 81 e3 81 99 e3 82 8b e3 81 ae e3 81  ................
2780: a7 e3 80 81 0a 3c 74 74 3e 7b 61 3a 20 31 32 33  .....<tt>{a: 123
2790: 2c 20 62 3a 20 34 35 36 7d 3c 2f 74 74 3e 20 e3  , b: 456}</tt> .
27a0: 81 aa e3 82 93 e3 81 8b e3 81 ab e3 82 82 e3 83  ................
27b0: 9e e3 83 83 e3 83 81 e3 81 97 e3 81 be e3 81 99  ................
27c0: e3 80 82 0a e3 81 aa e3 81 ae e3 81 a7 e3 80 81  ................
27d0: e3 83 aa e3 82 b9 e3 83 88 e3 81 ab e5 af be e3  ................
27e0: 81 99 e3 82 8b e3 83 91 e3 82 bf e3 83 bc e3 83  ................
27f0: b3 e3 82 92 e6 9b b8 e3 81 8f e3 81 a8 e3 81 8d  ................
2800: e3 81 ab e3 81 af e3 80 81 63 61 72 2f 63 64 72  .........car/cdr
2810: 20 e3 81 ae e5 a0 b4 e5 90 88 e3 82 92 e5 85 88   ...............
2820: e3 81 ab e6 9b b8 e3 81 8b e3 81 aa e3 81 84 e3  ................
2830: 81 a8 0a 3c 74 74 3e 77 68 65 6e 28 7b 7d 29 3c  ...<tt>when({})<
2840: 2f 74 74 3e 20 e3 82 92 e4 b8 8a e3 81 ab e6 9b  /tt> ...........
2850: b8 e3 81 8f e3 81 a8 e5 85 a8 e9 83 a8 e3 83 9e  ................
2860: e3 83 83 e3 83 81 e3 81 97 e3 81 a1 e3 82 83 e3  ................
2870: 81 84 e3 81 be e3 81 99 e3 80 82 e6 b3 a8 e6 84  ................
2880: 8f e3 80 82 0a 3c 2f 70 3e 0a 29 29 0a 29 0a 29  .....</p>.)).).)
2890: 29 0a 0a 0a 0a 0a 0a 24 28 53 45 43 54 49 4f 4e  )......$(SECTION
28a0: 20 4c 61 79 65 72 73 2c 20 24 28 53 45 43 42 4f   Layers, $(SECBO
28b0: 44 59 0a 3c 70 72 65 3e 0a 5b 4c 61 79 65 72 73  DY.<pre>.[Layers
28c0: 20 3a 3a 20 4f 76 65 72 76 69 65 77 5d 0a 0a 20   :: Overview].. 
28d0: 20 50 6f 6c 65 6d 79 27 73 20 72 75 6e 74 69 6d   Polemy's runtim
28e0: 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 68 61  e environment ha
28f0: 73 20 6d 61 6e 79 20 22 6c 61 79 65 72 22 73 2e  s many "layer"s.
2900: 0a 20 20 55 73 75 61 6c 20 65 78 65 63 75 74 69  .  Usual executi
2910: 6f 6e 20 72 75 6e 20 69 6e 20 74 68 65 20 40 76  on run in the @v
2920: 61 6c 75 65 20 6c 61 79 65 72 2e 0a 0a 20 20 20  alue layer...   
2930: 20 3e 3e 20 31 20 2b 20 32 0a 20 20 20 20 33 0a   >> 1 + 2.    3.
2940: 20 20 20 20 3e 3e 20 40 76 61 6c 75 65 28 20 31      >> @value( 1
2950: 20 2b 20 32 20 29 0a 20 20 20 20 33 0a 0a 20 20   + 2 ).    3..  
2960: 48 65 72 65 20 79 6f 75 20 63 61 6e 20 73 65 65  Here you can see
2970: 20 74 68 61 74 20 40 4c 61 79 65 72 4e 61 6d 65   that @LayerName
2980: 28 20 45 78 70 72 65 73 73 69 6f 6e 20 29 20 65  ( Expression ) e
2990: 78 65 63 75 74 65 73 20 74 68 65 20 69 6e 6e 65  xecutes the inne
29a0: 72 20 45 78 70 72 65 73 73 69 6f 6e 20 69 6e 0a  r Expression in.
29b0: 20 20 74 68 65 20 40 4c 61 79 65 72 4e 61 6d 65    the @LayerName
29c0: 20 6c 61 79 65 72 2e 20 4f 74 68 65 72 20 74 68   layer. Other th
29d0: 61 6e 20 40 76 61 6c 75 65 2c 20 6f 6e 65 20 6f  an @value, one o
29e0: 74 68 65 72 20 70 72 65 64 65 66 69 6e 65 64 20  ther predefined 
29f0: 6c 61 79 65 72 20 65 78 69 73 74 73 3a 20 40 6d  layer exists: @m
2a00: 61 63 72 6f 2e 0a 0a 20 20 20 20 3e 3e 20 40 6d  acro...    >> @m
2a10: 61 63 72 6f 28 20 31 2b 32 20 29 0a 20 20 20 20  acro( 1+2 ).    
2a20: 7b 70 6f 73 40 76 61 6c 75 65 3a 7b 6c 69 6e 65  {pos@value:{line
2a30: 6e 6f 40 76 61 6c 75 65 3a 33 2c 20 63 6f 6c 75  no@value:3, colu
2a40: 6d 6e 40 76 61 6c 75 65 3a 39 2c 20 66 69 6c 65  mn@value:9, file
2a50: 6e 61 6d 65 40 76 61 6c 75 65 3a 3c 52 45 50 4c  name@value:<REPL
2a60: 3e 7d 2c 0a 20 20 20 20 20 20 69 73 40 76 61 6c  >},.      is@val
2a70: 75 65 3a 61 70 70 2c 0a 20 20 20 20 61 72 67 73  ue:app,.    args
2a80: 40 76 61 6c 75 65 3a 7b 63 61 72 40 76 61 6c 75  @value:{car@valu
2a90: 65 3a 7b 70 6f 73 40 76 61 6c 75 65 3a 7b 6c 69  e:{pos@value:{li
2aa0: 6e 65 6e 6f 40 76 61 6c 75 65 3a 33 2c 20 63 6f  neno@value:3, co
2ab0: 6c 75 6d 6e 40 76 61 6c 75 65 3a 39 2c 20 66 69  lumn@value:9, fi
2ac0: 6c 65 6e 61 6d 65 40 76 61 6c 75 65 3a 3c 52 45  lename@value:<RE
2ad0: 50 4c 3e 7d 2c 0a 20 20 20 20 20 20 20 20 20 20  PL>},.          
2ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2af0: 20 20 69 73 40 76 61 6c 75 65 3a 69 6e 74 2c 0a    is@value:int,.
2b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b10: 20 20 20 20 20 20 20 20 20 20 64 61 74 61 40 76            data@v
2b20: 61 6c 75 65 3a 31 7d 2c 0a 20 20 20 20 20 20 20  alue:1},.       
2b30: 20 20 20 20 20 20 20 20 20 63 64 72 40 76 61 6c           cdr@val
2b40: 75 65 3a 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ue:{.           
2b50: 20 20 20 20 20 20 20 63 61 72 40 76 61 6c 75 65         car@value
2b60: 3a 7b 70 6f 73 40 76 61 6c 75 65 3a 7b 6c 69 6e  :{pos@value:{lin
2b70: 65 6e 6f 40 76 61 6c 75 65 3a 33 2c 20 63 6f 6c  eno@value:3, col
2b80: 75 6d 6e 40 76 61 6c 75 65 3a 31 31 2c 20 66 69  umn@value:11, fi
2b90: 6c 65 6e 61 6d 65 40 76 61 6c 75 65 3a 3c 52 45  lename@value:<RE
2ba0: 50 4c 3e 7d 2c 0a 20 20 20 20 20 20 20 20 20 20  PL>},.          
2bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc0: 20 20 20 20 69 73 40 76 61 6c 75 65 3a 69 6e 74      is@value:int
2bd0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
2be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61                da
2bf0: 74 61 40 76 61 6c 75 65 3a 32 7d 2c 0a 20 20 20  ta@value:2},.   
2c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
2c10: 64 72 40 76 61 6c 75 65 3a 7b 7d 7d 7d 2c 0a 20  dr@value:{}}},. 
2c20: 20 20 20 20 66 75 6e 40 76 61 6c 75 65 3a 7b 70      fun@value:{p
2c30: 6f 73 40 76 61 6c 75 65 3a 7b 6c 69 6e 65 6e 6f  os@value:{lineno
2c40: 40 76 61 6c 75 65 3a 33 2c 20 63 6f 6c 75 6d 6e  @value:3, column
2c50: 40 76 61 6c 75 65 3a 31 30 2c 20 66 69 6c 65 6e  @value:10, filen
2c60: 61 6d 65 40 76 61 6c 75 65 3a 3c 52 45 50 4c 3e  ame@value:<REPL>
2c70: 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  },.             
2c80: 20 20 20 20 69 73 40 76 61 6c 75 65 3a 76 61 72      is@value:var
2c90: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
2ca0: 20 6e 61 6d 65 40 76 61 6c 75 65 3a 2b 7d 7d 0a   name@value:+}}.
2cb0: 0a 20 20 28 53 6f 72 72 79 2c 20 74 68 69 73 20  .  (Sorry, this 
2cc0: 70 72 65 74 74 79 20 70 72 69 6e 74 69 6e 67 20  pretty printing 
2cd0: 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65  is not available
2ce0: 20 6f 6e 20 74 68 65 20 61 63 74 75 61 6c 20 69   on the actual i
2cf0: 6e 74 65 72 70 72 65 74 65 72 2e 2e 2e 29 0a 20  nterpreter...). 
2d00: 20 54 68 69 73 20 65 76 61 6c 75 61 74 65 73 20   This evaluates 
2d10: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 31  the expression 1
2d20: 2b 32 20 69 6e 20 74 68 65 20 40 6d 61 63 72 6f  +2 in the @macro
2d30: 20 6c 61 79 65 72 2e 20 49 6e 20 74 68 69 73 20   layer. In this 
2d40: 6c 61 79 65 72 2c 20 74 68 65 20 6d 65 61 6e 69  layer, the meani
2d50: 6e 67 20 6f 66 0a 20 20 74 68 65 20 70 72 6f 67  ng of.  the prog
2d60: 72 61 6d 20 69 73 20 69 74 73 20 61 62 73 74 72  ram is its abstr
2d70: 61 63 74 20 73 79 6e 74 61 78 20 74 72 65 65 2e  act syntax tree.
2d80: 0a 0a 20 20 59 6f 75 20 63 61 6e 20 69 6e 74 65  ..  You can inte
2d90: 72 6c 65 61 76 65 20 6c 61 79 65 72 73 2e 0a 20  rleave layers.. 
2da0: 20 54 68 65 20 72 6f 6f 74 20 6e 6f 64 65 20 6f   The root node o
2db0: 66 20 74 68 65 20 61 62 73 74 72 61 63 74 20 73  f the abstract s
2dc0: 79 6e 74 61 78 20 74 72 65 65 20 69 73 20 66 75  yntax tree is fu
2dd0: 6e 63 74 69 6f 6e 20 22 61 70 70 22 6c 69 63 61  nction "app"lica
2de0: 74 69 6f 6e 2e 0a 0a 20 20 20 20 3e 3e 20 40 76  tion...    >> @v
2df0: 61 6c 75 65 28 40 6d 61 63 72 6f 28 20 31 2b 32  alue(@macro( 1+2
2e00: 20 29 2e 69 73 29 0a 20 20 20 20 61 70 70 0a 0a   ).is).    app..
2e10: 0a 0a 5b 4c 61 79 65 72 73 20 3a 3a 20 44 65 66  ..[Layers :: Def
2e20: 69 6e 69 6e 67 20 61 20 6e 65 77 20 6c 61 79 65  ining a new laye
2e30: 72 5d 0a 0a 20 20 54 6f 20 64 65 66 69 6e 65 20  r]..  To define 
2e40: 61 20 6e 65 77 20 6c 61 79 65 72 2c 20 79 6f 75  a new layer, you
2e50: 20 73 68 6f 75 6c 64 20 66 69 72 73 74 20 74 65   should first te
2e60: 6c 6c 20 68 6f 77 20 74 6f 20 22 6c 69 66 74 22  ll how to "lift"
2e70: 20 65 78 69 73 74 69 6e 67 20 76 61 6c 75 65 73   existing values
2e80: 20 74 77 6f 20 74 68 65 20 6e 65 77 20 6c 61 79   two the new lay
2e90: 65 72 2e 0a 20 20 4c 65 74 20 75 73 20 64 65 66  er..  Let us def
2ea0: 69 6e 65 20 74 68 65 20 22 40 74 79 70 65 22 20  ine the "@type" 
2eb0: 6c 61 79 65 72 2c 20 77 68 65 72 65 20 74 68 65  layer, where the
2ec0: 20 6d 65 61 6e 69 6e 67 20 6f 66 20 70 72 6f 67   meaning of prog
2ed0: 72 61 6d 73 20 69 73 20 74 68 65 69 72 20 73 74  rams is their st
2ee0: 61 74 69 63 20 74 79 70 65 2e 0a 0a 20 20 20 20  atic type...    
2ef0: 3e 3e 20 40 40 74 79 70 65 20 3d 20 66 75 6e 28  >> @@type = fun(
2f00: 78 29 20 7b 0a 20 20 20 20 3e 3e 20 20 20 69 66  x) {.    >>   if
2f10: 28 20 5f 69 73 69 6e 74 28 78 29 20 29 20 7b 20  ( _isint(x) ) { 
2f20: 22 69 6e 74 22 20 7d 20 65 6c 73 65 20 7b 0a 20  "int" } else {. 
2f30: 20 20 20 3e 3e 20 20 20 69 66 28 20 5f 69 73 66     >>   if( _isf
2f40: 75 6e 28 78 29 20 29 20 7b 20 78 20 7d 20 65 6c  un(x) ) { x } el
2f50: 73 65 20 7b 20 22 75 6e 6b 6e 6f 77 6e 22 20 7d  se { "unknown" }
2f60: 20 7d 0a 20 20 20 20 3e 3e 20 7d 0a 20 20 20 20   }.    >> }.    
2f70: 28 4e 6f 74 65 3a 20 70 6f 6c 65 6d 79 20 52 45  (Note: polemy RE
2f80: 50 4c 20 6d 61 79 20 77 61 72 6e 20 73 6f 6d 65  PL may warn some
2f90: 20 65 78 63 65 70 74 69 6f 6e 20 68 65 72 65 20   exception here 
2fa0: 62 75 74 20 70 6c 65 61 73 65 20 69 67 6e 6f 72  but please ignor
2fb0: 65 29 0a 0a 20 20 46 6f 72 20 73 69 6d 70 6c 69  e)..  For simpli
2fc0: 63 69 74 79 2c 20 49 20 68 65 72 65 20 64 65 61  city, I here dea
2fd0: 6c 20 6f 6e 6c 79 20 77 69 74 68 20 69 6e 74 65  l only with inte
2fe0: 67 65 72 73 2e 0a 20 20 5f 69 73 69 6e 74 20 69  gers..  _isint i
2ff0: 73 20 61 20 70 72 69 6d 69 74 69 76 65 20 66 75  s a primitive fu
3000: 6e 63 74 69 6f 6e 20 6f 66 20 50 6f 6c 65 6d 79  nction of Polemy
3010: 20 74 68 61 74 20 63 68 65 63 6b 73 20 74 68 65   that checks the
3020: 20 64 79 6e 61 6d 69 63 20 74 79 70 65 20 6f 66   dynamic type of
3030: 20 61 20 76 61 6c 75 65 2e 0a 20 20 46 6f 72 20   a value..  For 
3040: 66 75 6e 63 74 69 6f 6e 2c 20 6c 65 61 76 69 6e  function, leavin
3050: 67 20 69 74 20 75 6e 74 6f 75 63 68 65 64 20 77  g it untouched w
3060: 6f 72 6b 73 20 77 65 6c 6c 20 66 6f 72 20 61 6c  orks well for al
3070: 6d 6f 73 74 20 61 6c 6c 20 6c 61 79 65 72 73 2e  most all layers.
3080: 0a 0a 20 20 20 20 3e 3e 20 40 74 79 70 65 28 20  ..    >> @type( 
3090: 31 20 29 0a 20 20 20 20 69 6e 74 0a 20 20 20 20  1 ).    int.    
30a0: 3e 3e 20 40 74 79 70 65 28 20 32 20 29 0a 20 20  >> @type( 2 ).  
30b0: 20 20 69 6e 74 0a 20 20 20 20 3e 3e 20 40 74 79    int.    >> @ty
30c0: 70 65 28 20 22 66 6f 6f 22 20 29 0a 20 20 20 20  pe( "foo" ).    
30d0: 75 6e 6b 6e 6f 77 6e 0a 0a 20 20 46 69 6e 65 21  unknown..  Fine!
30e0: 20 4c 65 74 27 73 20 74 72 79 20 74 6f 20 74 79   Let's try to ty
30f0: 70 65 20 31 2b 32 2e 0a 0a 20 20 20 20 3e 3e 20  pe 1+2...    >> 
3100: 40 74 79 70 65 28 20 31 20 2b 20 32 20 29 0a 20  @type( 1 + 2 ). 
3110: 20 20 20 2e 2e 2e 5c 76 61 6c 75 65 2e 64 28 31     ...\value.d(1
3120: 31 39 29 3a 20 5b 3c 52 45 50 4c 3e 3a 36 3a 38  19): [<REPL>:6:8
3130: 5d 20 6f 6e 6c 79 20 40 76 61 6c 75 65 20 6c 61  ] only @value la
3140: 79 65 72 20 63 61 6e 20 63 61 6c 6c 20 6e 61 74  yer can call nat
3150: 69 76 65 20 66 75 6e 63 74 69 6f 6e 0a 0a 20 20  ive function..  
3160: 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 62 65  Note that the be
3170: 68 61 76 69 6f 72 20 6f 66 20 74 68 69 73 20 70  havior of this p
3180: 72 6f 67 72 61 6d 20 69 73 0a 20 20 20 20 2d 20  rogram is.    - 
3190: 72 75 6e 20 31 2b 32 20 69 6e 20 74 68 65 20 40  run 1+2 in the @
31a0: 74 79 70 65 20 6c 61 79 65 72 0a 20 20 61 6e 64  type layer.  and
31b0: 20 4e 4f 54 0a 20 20 20 20 2d 20 72 75 6e 20 31   NOT.    - run 1
31c0: 2b 32 20 69 6e 20 40 76 61 6c 75 65 20 61 6e 64  +2 in @value and
31d0: 20 6f 62 74 61 69 6e 20 33 20 61 6e 64 20 72 75   obtain 3 and ru
31e0: 6e 20 33 20 69 6e 20 74 68 65 20 40 74 79 70 65  n 3 in the @type
31f0: 2e 0a 20 20 54 68 65 20 70 72 6f 62 6c 65 6d 20  ..  The problem 
3200: 69 73 2c 20 74 68 65 20 76 61 72 69 61 62 6c 65  is, the variable
3210: 20 22 2b 22 20 69 73 20 64 65 66 69 6e 65 64 20   "+" is defined 
3220: 6f 6e 6c 79 20 69 6e 20 74 68 65 20 40 76 61 6c  only in the @val
3230: 75 65 20 6c 61 79 65 72 2e 0a 20 20 54 6f 20 63  ue layer..  To c
3240: 61 72 72 79 20 6f 75 74 20 63 6f 6d 70 75 74 61  arry out computa
3250: 74 69 6f 6e 20 69 6e 20 74 68 65 20 40 74 79 70  tion in the @typ
3260: 65 20 6c 61 79 65 72 2e 20 57 65 20 6e 65 65 64  e layer. We need
3270: 20 74 6f 20 64 65 66 69 6e 65 20 69 74 20 61 6c   to define it al
3280: 73 6f 0a 20 20 69 6e 20 74 68 65 20 40 74 79 70  so.  in the @typ
3290: 65 20 6c 61 79 65 72 2e 0a 0a 20 20 54 6f 20 64  e layer...  To d
32a0: 65 66 69 6e 65 20 73 6f 6d 65 20 76 61 72 69 61  efine some varia
32b0: 62 6c 65 20 69 6e 20 61 20 73 70 65 63 69 66 69  ble in a specifi
32c0: 63 20 6c 61 79 65 72 2c 20 75 73 65 20 40 4c 61  c layer, use @La
32d0: 79 65 72 4e 61 6d 65 20 69 6e 20 70 6c 61 63 65  yerName in place
32e0: 20 6f 66 0a 20 20 28 6c 65 74 7c 76 61 72 7c 64   of.  (let|var|d
32f0: 65 66 29 73 2e 0a 0a 20 20 20 20 3e 3e 20 6c 65  ef)s...    >> le
3300: 74 20 78 20 3d 20 32 0a 20 20 20 20 3e 3e 20 40  t x = 2.    >> @
3310: 76 61 6c 75 65 20 78 20 3d 20 32 0a 20 20 20 20  value x = 2.    
3320: 3e 3e 20 40 74 79 70 65 20 78 20 3d 20 22 69 6e  >> @type x = "in
3330: 74 22 0a 20 20 20 20 3e 3e 20 40 68 6f 67 65 20  t".    >> @hoge 
3340: 78 20 3d 20 22 66 75 67 61 22 0a 0a 20 20 46 6f  x = "fuga"..  Fo
3350: 72 20 22 2b 22 2c 20 64 6f 20 69 74 20 6c 69 6b  r "+", do it lik
3360: 65 20 74 68 69 73 2e 0a 0a 20 20 20 20 3e 3e 20  e this...    >> 
3370: 40 74 79 70 65 20 22 2b 22 20 3d 20 66 75 6e 28  @type "+" = fun(
3380: 78 2c 79 29 20 7b 40 76 61 6c 75 65 28 0a 20 20  x,y) {@value(.  
3390: 20 20 3e 3e 20 20 20 69 66 28 20 40 74 79 70 65    >>   if( @type
33a0: 28 78 29 3d 3d 22 69 6e 74 22 20 26 26 20 40 74  (x)=="int" && @t
33b0: 79 70 65 28 79 29 3d 3d 22 69 6e 74 22 20 29 20  ype(y)=="int" ) 
33c0: 7b 20 22 69 6e 74 22 20 7d 20 65 6c 73 65 20 7b  { "int" } else {
33d0: 20 22 74 79 70 65 65 72 72 6f 72 22 20 7d 0a 20   "typeerror" }. 
33e0: 20 20 20 3e 3e 20 29 7d 0a 20 20 20 20 70 6f 6c     >> )}.    pol
33f0: 65 6d 79 2e 76 61 6c 75 65 2e 6e 61 74 69 76 65  emy.value.native
3400: 21 28 49 6e 74 56 61 6c 75 65 2c 49 6e 74 56 61  !(IntValue,IntVa
3410: 6c 75 65 2c 49 6e 74 56 61 6c 75 65 29 2e 6e 61  lue,IntValue).na
3420: 74 69 76 65 2e 5f 5f 61 6e 6f 6e 63 6c 61 73 73  tive.__anonclass
3430: 32 34 0a 0a 20 20 49 74 20 69 73 20 6a 75 73 74  24..  It is just
3440: 20 63 6f 6d 70 75 74 69 6e 67 20 74 68 65 20 72   computing the r
3450: 65 74 75 72 6e 20 74 79 70 65 20 66 72 6f 6d 20  eturn type from 
3460: 74 68 65 20 69 6e 70 75 74 20 74 79 70 65 2e 0a  the input type..
3470: 20 20 4e 6f 74 20 68 65 72 65 20 74 68 61 74 20    Not here that 
3480: 74 68 65 20 69 6e 74 65 6e 64 65 64 20 22 6d 65  the intended "me
3490: 61 6e 69 6e 67 22 20 6f 66 20 69 66 2d 74 68 65  aning" of if-the
34a0: 6e 2d 65 6c 73 65 20 69 73 20 74 68 65 20 72 75  n-else is the ru
34b0: 6e 74 69 6d 65 2d 62 72 61 6e 63 68 69 6e 67 2c  ntime-branching,
34c0: 0a 20 20 61 6e 64 20 74 68 65 20 6d 65 61 6e 69  .  and the meani
34d0: 6e 67 20 6f 66 20 22 3d 3d 22 20 69 73 20 74 68  ng of "==" is th
34e0: 65 20 76 61 6c 75 65 2d 63 6f 6d 70 61 72 69 73  e value-comparis
34f0: 6f 6e 2e 20 54 68 65 73 65 20 61 72 65 20 74 68  on. These are th
3500: 65 20 40 76 61 6c 75 65 20 6c 61 79 65 72 0a 20  e @value layer. 
3510: 20 62 65 68 61 76 69 6f 72 2e 20 53 6f 20 77 65   behavior. So we
3520: 20 68 61 76 65 20 64 65 66 69 6e 65 64 20 74 68   have defined th
3530: 65 20 66 75 6e 63 74 69 6f 6e 20 62 6f 64 79 20  e function body 
3540: 69 6e 73 69 64 65 20 40 76 61 6c 75 65 20 6c 61  inside @value la
3550: 79 65 72 2e 0a 20 20 42 75 74 20 77 68 65 6e 20  yer..  But when 
3560: 77 65 20 72 65 66 65 72 20 74 68 65 20 76 61 72  we refer the var
3570: 69 61 62 6c 65 73 20 78 20 61 6e 64 20 79 2c 20  iables x and y, 
3580: 77 65 20 6e 65 65 64 20 69 74 73 20 40 74 79 70  we need its @typ
3590: 65 20 6c 61 79 65 72 20 6d 65 61 6e 69 6e 67 2e  e layer meaning.
35a0: 0a 20 20 48 65 6e 63 65 20 77 65 20 75 73 65 20  .  Hence we use 
35b0: 40 74 79 70 65 28 29 20 74 68 65 72 65 2e 0a 0a  @type() there...
35c0: 20 20 4e 6f 77 20 77 65 20 67 65 74 20 69 74 2e    Now we get it.
35d0: 0a 0a 20 20 20 20 3e 3e 20 40 74 79 70 65 28 20  ..    >> @type( 
35e0: 31 20 2b 20 32 20 29 0a 20 20 20 20 69 6e 74 0a  1 + 2 ).    int.
35f0: 0a 20 20 57 65 6c 6c 2c 20 62 75 74 20 64 6f 20  .  Well, but do 
3600: 77 65 20 68 61 76 65 20 74 6f 20 64 65 66 69 6e  we have to defin
3610: 65 20 74 68 65 20 40 74 79 70 65 20 6c 61 79 65  e the @type laye
3620: 72 20 6d 65 61 6e 69 6e 67 20 66 6f 72 20 65 76  r meaning for ev
3630: 65 72 79 20 76 61 72 69 61 62 6c 65 73 3f 3f 3f  ery variables???
3640: 0a 20 20 4e 6f 2e 20 41 66 74 65 72 20 79 6f 75  .  No. After you
3650: 20 64 65 66 69 6e 65 64 20 40 74 79 70 65 20 22   defined @type "
3660: 2b 22 2c 20 79 6f 75 27 6c 6c 20 61 75 74 6f 6d  +", you'll autom
3670: 61 74 69 63 61 6c 6c 79 20 67 65 74 20 74 68 65  atically get the
3680: 20 66 6f 6c 6c 6f 77 69 6e 67 3a 0a 0a 20 20 20   following:..   
3690: 20 3e 3e 20 64 65 66 20 64 6f 75 62 6c 65 28 78   >> def double(x
36a0: 29 20 7b 20 78 20 2b 20 78 20 7d 0a 20 20 20 20  ) { x + x }.    
36b0: 28 66 75 6e 63 74 69 6f 6e 3a 31 37 65 34 37 34  (function:17e474
36c0: 30 3a 31 37 38 39 37 32 30 29 0a 0a 20 20 20 20  0:1789720)..    
36d0: 3e 3e 20 40 74 79 70 65 28 20 64 6f 75 62 6c 65  >> @type( double
36e0: 28 31 32 33 29 20 29 0a 20 20 20 20 69 6e 74 0a  (123) ).    int.
36f0: 0a 20 20 45 76 65 72 79 20 75 73 65 72 2d 64 65  .  Every user-de
3700: 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 73 20  fined functions 
3710: 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  are automaticall
3720: 79 20 22 6c 69 66 74 22 65 64 20 74 6f 20 74 68  y "lift"ed to th
3730: 65 20 61 70 70 72 6f 70 72 69 61 74 65 20 6c 61  e appropriate la
3740: 79 65 72 2e 0a 20 20 4f 6e 6c 79 20 70 72 69 6d  yer..  Only prim
3750: 69 74 69 76 65 20 66 75 6e 63 74 69 6f 6e 73 20  itive functions 
3760: 6c 69 6b 65 20 22 2b 22 20 72 65 71 75 69 72 65  like "+" require
3770: 73 20 40 79 6f 75 72 4e 65 77 4c 61 79 65 72 20  s @yourNewLayer 
3780: 61 6e 6e 6f 74 61 74 69 6f 6e 2e 0a 0a 0a 0a 5b  annotation.....[
3790: 4c 61 79 65 72 73 20 3a 3a 20 6e 65 75 74 72 61  Layers :: neutra
37a0: 6c 2d 6c 61 79 65 72 5d 0a 0a 20 20 6c 65 74 7c  l-layer]..  let|
37b0: 76 61 72 7c 64 65 66 20 69 73 20 74 6f 20 64 65  var|def is to de
37c0: 66 69 6e 65 20 61 20 76 61 72 69 61 62 6c 65 20  fine a variable 
37d0: 69 6e 20 74 68 65 20 22 63 75 72 72 65 6e 74 22  in the "current"
37e0: 20 6c 61 79 65 72 2e 0a 20 20 4e 6f 74 20 6e 65   layer..  Not ne
37f0: 63 65 73 73 61 72 79 20 74 6f 20 74 68 65 20 40  cessary to the @
3800: 76 61 6c 75 65 20 6c 61 79 65 72 2e 0a 0a 20 20  value layer...  
3810: 20 20 3e 3e 20 40 76 61 6c 75 65 28 20 6c 65 74    >> @value( let
3820: 20 78 20 3d 20 31 20 69 6e 20 40 76 61 6c 75 65   x = 1 in @value
3830: 28 78 29 20 29 0a 20 20 20 20 31 0a 0a 20 20 20  (x) ).    1..   
3840: 20 3e 3e 20 40 6d 61 63 72 6f 28 20 6c 65 74 20   >> @macro( let 
3850: 78 20 3d 20 31 20 69 6e 20 40 76 61 6c 75 65 28  x = 1 in @value(
3860: 78 29 20 29 0a 20 20 20 20 70 6f 6c 65 6d 79 2e  x) ).    polemy.
3870: 66 61 69 6c 75 72 65 2e 52 75 6e 74 69 6d 65 45  failure.RuntimeE
3880: 78 63 65 70 74 69 6f 6e 3a 20 5b 3c 52 45 50 4c  xception: [<REPL
3890: 3e 3a 31 34 3a 32 39 5d 20 76 61 72 69 61 62 6c  >:14:29] variabl
38a0: 65 20 78 20 6e 6f 74 20 66 6f 75 6e 64 0a 0a 20  e x not found.. 
38b0: 20 20 20 3e 3e 20 40 6d 61 63 72 6f 28 20 6c 65     >> @macro( le
38c0: 74 20 78 20 3d 20 31 20 69 6e 20 40 6d 61 63 72  t x = 1 in @macr
38d0: 6f 28 78 29 20 29 0a 20 20 20 20 7b 70 6f 73 40  o(x) ).    {pos@
38e0: 76 61 6c 75 65 3a 7b 6c 69 6e 65 6e 6f 40 76 61  value:{lineno@va
38f0: 6c 75 65 3a 31 35 2c 20 2e 2e 2e 0a 0a 0a 0a 5b  lue:15, .......[
3900: 4c 61 79 65 72 73 20 3a 3a 20 4c 61 79 65 72 65  Layers :: Layere
3910: 64 2d 50 61 72 61 6d 65 74 65 72 73 5d 0a 0a 20  d-Parameters].. 
3920: 20 20 20 3e 3e 20 64 65 66 20 66 6f 6f 28 78 20     >> def foo(x 
3930: 40 6d 61 63 72 6f 20 40 76 61 6c 75 65 29 20 7b  @macro @value) {
3940: 20 7b 66 73 74 3a 20 78 2c 20 73 6e 64 3a 20 40   {fst: x, snd: @
3950: 6d 61 63 72 6f 28 78 29 7d 20 7d 0a 20 20 20 20  macro(x)} }.    
3960: 28 66 75 6e 63 74 69 6f 6e 3a 31 37 33 30 33 36  (function:173036
3970: 30 3a 31 37 38 39 37 32 30 29 0a 0a 20 20 49 66  0:1789720)..  If
3980: 20 79 6f 75 20 61 6e 6e 6f 74 61 74 65 20 66 75   you annotate fu
3990: 6e 63 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72  nction parameter
39a0: 73 20 62 79 20 40 4c 61 79 65 72 4e 61 6d 65 73  s by @LayerNames
39b0: 2c 20 77 68 65 6e 20 79 6f 75 20 69 6e 76 6f 6b  , when you invok
39c0: 65 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 2e 2e  e the function..
39d0: 2e 0a 0a 20 20 20 20 3e 3e 20 66 6f 6f 28 31 2b  ...    >> foo(1+
39e0: 32 29 0a 20 20 20 20 7b 73 6e 64 40 76 61 6c 75  2).    {snd@valu
39f0: 65 3a 20 7b 70 6f 73 40 76 61 6c 75 65 3a 7b 6c  e: {pos@value:{l
3a00: 69 6e 65 6e 6f 40 76 61 6c 75 65 3a 31 37 2c 20  ineno@value:17, 
3a10: 63 6f 6c 75 6d 6e 40 76 61 6c 75 65 3a 35 2c 20  column@value:5, 
3a20: 66 69 6c 65 6e 61 6d 65 40 76 61 6c 75 65 3a 3c  filename@value:<
3a30: 52 45 50 4c 3e 7d 2c 0a 20 20 20 20 20 20 20 20  REPL>},.        
3a40: 20 20 20 20 20 20 20 20 20 20 69 73 40 76 61 6c            is@val
3a50: 75 65 3a 61 70 70 2c 20 61 72 67 40 76 61 6c 75  ue:app, arg@valu
3a60: 65 3a 7b 2e 2e 2e 0a 20 20 20 20 2f 66 73 74 40  e:{....    /fst@
3a70: 76 61 6c 75 65 3a 33 0a 20 20 20 20 2f 7d 0a 0a  value:3.    /}..
3a80: 20 20 69 74 73 20 63 6f 72 72 65 73 70 6f 6e 64    its correspond
3a90: 69 6e 67 20 61 72 67 75 6d 65 6e 74 73 20 61 72  ing arguments ar
3aa0: 65 20 65 76 61 6c 75 61 74 65 64 20 69 6e 20 74  e evaluated in t
3ab0: 68 65 20 6c 61 79 65 72 20 61 6e 64 20 70 61 73  he layer and pas
3ac0: 73 65 64 20 74 6f 20 69 74 2e 0a 20 20 49 66 20  sed to it..  If 
3ad0: 79 6f 75 20 73 70 65 63 69 66 79 20 6d 75 6c 74  you specify mult
3ae0: 69 70 6c 65 20 6c 61 79 65 72 73 2c 20 74 68 65  iple layers, the
3af0: 20 61 72 67 75 6d 65 6e 74 20 65 78 70 72 65 73   argument expres
3b00: 73 69 6f 6e 20 69 73 20 72 75 6e 20 6d 75 6c 74  sion is run mult
3b10: 69 70 6c 65 20 74 69 6d 65 73 2e 0a 20 20 49 66  iple times..  If
3b20: 20 79 6f 75 20 64 6f 20 6e 6f 74 20 73 70 65 63   you do not spec
3b30: 69 66 79 20 61 6e 79 20 6c 61 79 65 72 20 66 6f  ify any layer fo
3b40: 72 20 61 20 70 61 72 61 6d 65 74 65 72 2c 20 69  r a parameter, i
3b50: 74 20 77 6f 72 6b 73 20 69 6e 20 74 68 65 20 6e  t works in the n
3b60: 65 75 74 72 61 6c 20 6c 61 79 65 72 2e 0a 3c 2f  eutral layer..</
3b70: 70 72 65 3e 0a 29 29 0a 0a 0a 24 28 53 45 43 54  pre>.))...$(SECT
3b80: 49 4f 4e 20 4d 61 63 72 6f 20 4c 61 79 65 72 73  ION Macro Layers
3b90: 2c 20 24 28 53 45 43 42 4f 44 59 0a 3c 70 3e 0a  , $(SECBODY.<p>.
3ba0: 50 6f 6c 65 6d 79 20 e8 a8 80 e8 aa 9e e7 b5 84  Polemy .........
3bb0: e3 81 bf e8 be bc e3 81 bf e3 81 ae e3 83 ac e3  ................
3bc0: 82 a4 e3 83 a4 e3 81 af 20 3c 63 6f 64 65 3e 40  ........ <code>@
3bd0: 76 61 6c 75 65 3c 2f 63 6f 64 65 3e 20 e3 81 a8  value</code> ...
3be0: 20 3c 63 6f 64 65 3e 40 6d 61 63 72 6f 3c 2f 63   <code>@macro</c
3bf0: 6f 64 65 3e 20 e3 81 ae e4 ba 8c e3 81 a4 e3 81  ode> ...........
3c00: a7 e3 81 99 e3 80 82 0a ef bc 88 e5 86 85 e9 83  ................
3c10: a8 e7 9a 84 e3 81 ab e3 81 af e3 82 82 e3 81 86  ................
3c20: e3 81 84 e3 81 8f e3 81 a4 e3 81 8b e3 81 82 e3  ................
3c30: 82 8a e3 81 be e3 81 99 e3 81 8c e3 80 81 e3 83  ................
3c40: a6 e3 83 bc e3 82 b6 e3 81 8b e3 82 89 e7 9b b4  ................
3c50: e6 8e a5 e3 81 af e4 bd bf e3 81 88 e3 81 be e3  ................
3c60: 81 9b e3 82 93 e3 80 82 ef bc 89 0a 3c 63 6f 64  ............<cod
3c70: 65 3e 40 76 61 6c 75 65 3c 2f 63 6f 64 65 3e 20  e>@value</code> 
3c80: e3 81 af e3 80 81 e3 80 8c e6 99 ae e9 80 9a e3  ................
3c90: 81 ab e3 80 8d e6 99 ae e9 80 9a e3 81 ae e3 82  ................
3ca0: bb e3 83 9e e3 83 b3 e3 83 86 e3 82 a3 e3 82 af  ................
3cb0: e3 82 b9 e3 81 a7 e3 83 97 e3 83 ad e3 82 b0 e3  ................
3cc0: 83 a9 e3 83 a0 e3 82 92 e5 ae 9f e8 a1 8c e3 81  ................
3cd0: 99 e3 82 8b e3 83 ac e3 82 a4 e3 83 a4 e3 81 a7  ................
3ce0: e3 81 97 e3 81 9f e3 80 82 0a 3c 63 6f 64 65 3e  ..........<code>
3cf0: 40 6d 61 63 72 6f 3c 2f 63 6f 64 65 3e 20 e3 81  @macro</code> ..
3d00: af e3 80 81 e5 ae 9f e3 81 af e3 80 81 3c 63 6f  .............<co
3d10: 64 65 3e 40 76 61 6c 75 65 3c 2f 63 6f 64 65 3e  de>@value</code>
3d20: 20 e3 82 88 e3 82 8a e3 82 82 e5 89 8d e3 81 ab   ...............
3d30: e5 ae 9f e8 a1 8c e3 81 95 e3 82 8c e3 82 8b e3  ................
3d40: 83 ac e3 82 a4 e3 83 a4 e3 81 a7 e3 80 81 0a e3  ................
3d50: 80 8c e3 83 97 e3 83 ad e3 82 b0 e3 83 a9 e3 83  ................
3d60: a0 e3 82 92 e5 ae 9f e8 a1 8c e3 81 99 e3 82 8b  ................
3d70: e3 81 a8 e3 81 9d e3 81 ae e6 a7 8b e6 96 87 e6  ................
3d80: 9c a8 e3 82 92 e8 bf 94 e3 81 99 e3 80 8d e3 81  ................
3d90: a8 e3 81 84 e3 81 86 e3 82 bb e3 83 9e e3 83 b3  ................
3da0: e3 83 86 e3 82 a3 e3 82 af e3 82 b9 e3 81 a7 e5  ................
3db0: 8b 95 e3 81 8d e3 81 be e3 81 99 e3 80 82 0a 3c  ...............<
3dc0: 2f 70 3e 0a 3c 70 72 65 3e 0a 20 20 20 20 28 e3  /p>.<pre>.    (.
3dd0: 81 93 e3 81 93 e3 81 ab e4 be 8b 29 0a 3c 2f 70  ...........).</p
3de0: 72 65 3e 0a 3c 70 3e 0a e5 8b 95 e3 81 8d e3 81  re>.<p>.........
3df0: a8 e3 81 97 e3 81 a6 e3 81 af e3 81 93 e3 81 86  ................
3e00: e3 81 a7 e3 81 99 e3 80 82 0a 3c 2f 70 3e 0a 3c  ..........</p>.<
3e10: 6f 6c 3e 0a 3c 6c 69 3e e9 96 a2 e6 95 b0 e5 91  ol>.<li>........
3e20: bc e3 81 b3 e5 87 ba e3 81 97 e6 99 82 ef bc 88  ................
3e30: e3 81 a8 e3 83 88 e3 83 83 e3 83 97 e3 83 ac e3  ................
3e40: 83 99 e3 83 ab e7 92 b0 e5 a2 83 e3 81 ae e5 ae  ................
3e50: 9f e8 a1 8c e9 96 8b e5 a7 8b e6 99 82 ef bc 89  ................
3e60: e3 81 ab e3 80 81 0a 09 e3 81 be e3 81 9a e3 80  ................
3e70: 81 3c 63 6f 64 65 3e 40 6d 61 63 72 6f 3c 2f 63  .<code>@macro</c
3e80: 6f 64 65 3e 20 e3 83 ac e3 82 a4 e3 83 a4 e3 81  ode> ...........
3e90: a7 e3 82 b3 e3 83 bc e3 83 89 e3 82 92 e5 ae 9f  ................
3ea0: e8 a1 8c e3 80 82 3c 2f 6c 69 3e 0a 3c 6c 69 3e  ......</li>.<li>
3eb0: e8 bf 94 e3 81 a3 e3 81 a6 e3 81 8d e3 81 9f e6  ................
3ec0: a7 8b e6 96 87 e6 9c a8 e3 82 92 e3 80 81 3c 63  ..............<c
3ed0: 6f 64 65 3e 40 76 61 6c 75 65 3c 2f 63 6f 64 65  ode>@value</code
3ee0: 3e 20 e3 83 ac e3 82 a4 e3 83 a4 e3 80 81 0a 09  > ..............
3ef0: e3 81 be e3 81 9f e3 81 af e3 81 9d e3 81 ae e9  ................
3f00: 96 a2 e6 95 b0 e3 82 92 e5 91 bc e3 81 b3 e5 87  ................
3f10: ba e3 81 97 e3 81 9f e3 81 a8 e3 81 8d e3 81 ae  ................
3f20: e3 83 ac e3 82 a4 e3 83 a4 e3 81 a7 e5 ae 9f e8  ................
3f30: a1 8c e3 80 82 3c 2f 6c 69 3e 0a 3c 2f 6f 6c 3e  .....</li>.</ol>
3f40: 0a 3c 70 3e 0a 3c 63 6f 64 65 3e 40 6d 61 63 72  .<p>.<code>@macr
3f50: 6f 3c 2f 63 6f 64 65 3e 20 e3 83 ac e3 82 a4 e3  o</code> .......
3f60: 83 a4 e3 82 82 e6 89 80 e8 a9 ae e3 81 9f e3 81  ................
3f70: a0 e3 81 ae e3 83 ac e3 82 a4 e3 83 a4 e3 81 a7  ................
3f80: e3 81 99 e3 81 ae e3 81 a7 e3 80 81 0a e4 b8 8a  ................
3f90: e3 81 a7 e8 aa ac e6 98 8e e3 81 97 e3 81 9f e6  ................
3fa0: 96 b9 e6 b3 95 e3 81 a7 20 3c 63 6f 64 65 3e 40  ........ <code>@
3fb0: 6d 61 63 72 6f 3c 2f 63 6f 64 65 3e 20 e3 83 ac  macro</code> ...
3fc0: e3 82 a4 e3 83 a4 e3 81 ab e9 96 a2 e6 95 b0 e3  ................
3fd0: 81 aa e3 81 a9 e3 82 92 e7 99 bb e9 8c b2 e3 81  ................
3fe0: 97 e3 81 a6 e3 81 8a e3 81 8f e3 81 93 e3 81 a8  ................
3ff0: e3 81 a7 e3 80 81 0a e6 a7 8b e6 96 87 e6 9c a8  ................
4000: e3 81 ae e7 94 9f e6 88 90 e3 82 92 e3 81 84 e3  ................
4010: 81 98 e3 82 8b e3 81 93 e3 81 a8 e3 81 8c e5 8f  ................
4020: af e8 83 bd e3 81 a7 e3 81 99 e3 80 82 e3 81 be  ................
4030: e3 81 95 e3 81 ab e3 83 9e e3 82 af e3 83 ad e3  ................
4040: 80 82 0a 3c 2f 70 3e 0a 0a 24 28 44 44 4f 43 5f  ...</p>..$(DDOC_
4050: 4d 45 4d 42 45 52 53 0a 24 28 53 45 43 54 49 4f  MEMBERS.$(SECTIO
4060: 4e 20 e4 bd bf e3 81 84 e6 96 b9 2c 20 24 28 53  N ........., $(S
4070: 45 43 42 4f 44 59 0a 3c 70 72 65 3e 0a 20 20 20  ECBODY.<pre>.   
4080: 57 68 65 6e 20 66 75 6e 63 74 69 6f 6e 20 69 73  When function is
4090: 20 69 6e 76 6f 6b 65 64 2c 20 69 74 20 66 69 72   invoked, it fir
40a0: 73 74 20 72 75 6e 20 69 6e 20 74 68 65 20 40 6d  st run in the @m
40b0: 61 63 72 6f 20 6c 61 79 65 72 2c 20 61 6e 64 20  acro layer, and 
40c0: 61 66 74 65 72 20 74 68 61 74 2c 0a 20 20 20 69  after that,.   i
40d0: 74 20 72 75 6e 20 69 6e 20 74 68 65 20 6e 65 75  t run in the neu
40e0: 74 72 61 6c 20 6c 61 79 65 72 2e 20 48 65 72 65  tral layer. Here
40f0: 20 69 73 20 61 6e 20 65 78 61 6d 70 6c 65 2e 0a   is an example..
4100: 0a 20 20 20 20 20 3e 3e 20 40 6d 61 63 72 6f 20  .     >> @macro 
4110: 74 77 69 63 65 28 78 29 20 7b 20 78 3b 20 78 20  twice(x) { x; x 
4120: 7d 0a 20 20 20 20 20 3e 3e 20 64 65 66 20 66 28  }.     >> def f(
4130: 29 20 7b 20 74 77 69 63 65 28 70 72 69 6e 74 28  ) { twice(print(
4140: 22 48 65 6c 6c 6f 22 29 29 3b 20 39 39 39 20 7d  "Hello")); 999 }
4150: 0a 20 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 3a  .     (function:
4160: 31 37 33 62 36 61 30 3a 31 37 38 39 37 32 30 29  173b6a0:1789720)
4170: 0a 20 20 20 20 20 3e 3e 20 66 28 29 0a 20 20 20  .     >> f().   
4180: 20 20 48 65 6c 6c 6f 0a 20 20 20 20 20 48 65 6c    Hello.     Hel
4190: 6c 6f 0a 20 20 20 20 20 39 39 39 0a 0a 20 20 20  lo.     999..   
41a0: 57 68 65 6e 20 74 68 65 20 69 6e 74 65 72 70 72  When the interpr
41b0: 65 74 65 72 20 65 76 61 6c 75 61 74 65 73 20 66  eter evaluates f
41c0: 28 29 2c 20 69 74 20 66 69 72 73 74 20 65 78 65  (), it first exe
41d0: 63 75 74 65 73 0a 20 20 20 20 20 22 74 77 69 63  cutes.     "twic
41e0: 65 28 70 72 69 6e 74 28 22 48 65 6c 6c 6f 22 29  e(print("Hello")
41f0: 29 3b 20 39 39 39 22 0a 20 20 20 69 6e 20 74 68  ); 999".   in th
4200: 65 20 40 6d 61 63 72 6f 20 6c 61 79 65 72 2e 20  e @macro layer. 
4210: 42 61 73 69 63 61 6c 6c 79 20 77 68 61 74 20 69  Basically what i
4220: 74 20 64 6f 65 73 20 69 73 20 74 6f 20 6a 75 73  t does is to jus
4230: 74 20 63 6f 6e 73 74 72 75 63 74 20 69 74 73 20  t construct its 
4240: 73 79 6e 74 61 78 20 74 72 65 65 2e 0a 20 20 20  syntax tree..   
4250: 42 75 74 2c 20 73 69 6e 63 65 20 77 65 20 68 61  But, since we ha
4260: 76 65 20 64 65 66 69 6e 65 64 20 74 68 65 20 22  ve defined the "
4270: 74 77 69 63 65 22 20 66 75 6e 63 74 69 6f 6e 20  twice" function 
4280: 69 6e 20 74 68 65 20 40 6d 61 63 72 6f 20 6c 61  in the @macro la
4290: 79 65 72 2c 20 69 74 20 69 73 0a 20 20 20 65 78  yer, it is.   ex
42a0: 65 63 75 74 65 20 61 73 20 61 20 66 75 6e 63 74  ecute as a funct
42b0: 69 6f 6e 2e 20 52 65 73 75 6c 74 69 6e 67 20 73  ion. Resulting s
42c0: 79 6e 74 61 78 20 74 72 65 65 20 69 73 0a 20 20  yntax tree is.  
42d0: 20 20 20 22 70 72 69 6e 74 28 22 48 65 6c 6c 6f     "print("Hello
42e0: 22 29 3b 20 70 72 69 6e 74 28 22 48 65 6c 6c 6f  "); print("Hello
42f0: 22 29 3b 20 39 39 39 22 0a 20 20 20 61 6e 64 20  "); 999".   and 
4300: 74 68 69 73 20 69 73 20 65 78 65 63 75 74 65 64  this is executed
4310: 20 6f 6e 20 74 68 65 20 6e 65 75 74 72 61 6c 20   on the neutral 
4320: 28 69 6e 20 74 68 69 73 20 65 78 61 6d 70 6c 65  (in this example
4330: 2c 20 40 76 61 6c 75 65 29 20 6c 61 79 65 72 2e  , @value) layer.
4340: 0a 20 20 20 54 68 69 73 20 69 73 20 74 68 65 20  .   This is the 
4350: 72 65 61 73 6f 6e 20 77 68 79 20 79 6f 75 20 73  reason why you s
4360: 65 65 20 74 77 6f 20 22 48 65 6c 6c 6f 22 73 2e  ee two "Hello"s.
4370: 0a 0a 20 20 20 20 20 20 5b 5b 71 75 6f 74 65 20  ..      [[quote 
4380: 61 6e 64 20 75 6e 71 75 6f 74 65 5d 5d 0a 0a 20  and unquote]].. 
4390: 20 20 48 65 72 65 20 69 73 20 6d 6f 72 65 20 69    Here is more i
43a0: 6e 76 6f 6c 76 65 64 20 65 78 61 6d 70 6c 65 20  nvolved example 
43b0: 6f 66 20 63 6f 64 65 20 67 65 6e 72 61 74 69 6f  of code genratio
43c0: 6e 2e 0a 20 20 20 46 72 6f 6d 20 22 78 22 2c 20  n..   From "x", 
43d0: 69 74 20 67 65 6e 65 72 61 74 65 73 20 22 78 2a  it generates "x*
43e0: 78 2a 78 2a 78 2a 78 2a 78 2a 78 2a 78 2a 78 2a  x*x*x*x*x*x*x*x*
43f0: 78 22 2e 0a 0a 20 20 20 20 20 40 6d 61 63 72 6f  x"...     @macro
4400: 20 70 6f 77 31 30 28 78 29 20 7b 0a 20 20 20 20   pow10(x) {.    
4410: 20 20 20 40 76 61 6c 75 65 28 0a 20 20 20 20 20     @value(.     
4420: 20 20 20 20 64 65 66 20 70 6f 77 28 78 2c 20 6e      def pow(x, n
4430: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 69  ) {.           i
4440: 66 28 20 6e 20 3d 3d 20 31 20 29 20 7b 20 78 20  f( n == 1 ) { x 
4450: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 65 6c 73  }.           els
4460: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  e {.            
4470: 20 40 6d 61 63 72 6f 28 20 40 76 61 6c 75 65 28   @macro( @value(
4480: 78 29 20 2a 20 40 76 61 6c 75 65 28 70 6f 77 28  x) * @value(pow(
4490: 78 2c 6e 2d 31 29 29 20 29 0a 20 20 20 20 20 20  x,n-1)) ).      
44a0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
44b0: 7d 0a 20 20 20 20 20 20 20 20 20 69 6e 0a 20 20  }.         in.  
44c0: 20 20 20 20 20 20 20 20 20 70 6f 77 28 40 6d 61           pow(@ma
44d0: 63 72 6f 28 78 29 2c 31 30 29 0a 20 20 20 20 20  cro(x),10).     
44e0: 20 20 29 0a 20 20 20 20 20 7d 3b 0a 0a 20 20 20    ).     };..   
44f0: 48 65 72 65 2c 20 78 20 69 73 20 61 20 73 79 6e  Here, x is a syn
4500: 74 61 78 20 74 72 65 65 20 62 75 74 20 6e 20 69  tax tree but n i
4510: 73 20 61 6e 20 61 63 74 75 61 6c 20 69 6e 74 65  s an actual inte
4520: 67 65 72 2e 20 49 66 20 79 6f 75 20 72 65 61 64  ger. If you read
4530: 20 63 61 72 65 66 75 6c 6c 79 2c 0a 20 20 20 79   carefully,.   y
4540: 6f 75 20 73 68 6f 75 6c 64 20 67 65 74 20 77 68  ou should get wh
4550: 61 74 20 69 73 20 67 6f 69 6e 67 20 6f 6e 2e 20  at is going on. 
4560: 42 61 73 69 63 61 6c 6c 79 2c 20 40 6d 61 63 72  Basically, @macr
4570: 6f 20 63 61 6e 20 62 65 20 63 6f 6e 73 69 64 65  o can be conside
4580: 72 65 64 20 6c 69 6b 65 0a 20 20 20 71 75 61 73  red like.   quas
4590: 69 71 75 6f 74 69 6e 67 20 61 6e 64 20 40 76 61  iquoting and @va
45a0: 6c 75 65 20 74 6f 20 62 65 20 61 6e 20 65 73 63  lue to be an esc
45b0: 61 70 65 20 66 72 6f 6d 20 69 74 2e 0a 3c 2f 70  ape from it..</p
45c0: 72 65 3e 0a 3c 70 3e 0a e6 a7 8b e6 96 87 e6 9c  re>.<p>.........
45d0: a8 e3 81 8c e3 81 a9 e3 81 ae e3 82 88 e3 81 86  ................
45e0: e3 81 aa e3 83 86 e3 83 bc e3 83 96 e3 83 ab e3  ................
45f0: 81 a7 e6 b8 a1 e3 81 95 e3 82 8c e3 81 a6 e3 81  ................
4600: 8f e3 82 8b e3 81 8b e3 81 ab e3 81 a4 e3 81 84  ................
4610: e3 81 a6 e3 81 af e3 80 81 e3 82 bd e3 83 bc e3  ................
4620: 82 b9 e3 83 89 e3 82 ad e3 83 a5 e3 83 a1 e3 83  ................
4630: b3 e3 83 88 e3 81 ae 0a 3c 61 20 68 72 65 66 3d  ........<a href=
4640: 22 68 74 74 70 3a 2f 2f 77 77 77 2e 6b 6d 6f 6e  "http://www.kmon
4650: 6f 73 2e 6e 65 74 2f 72 65 70 6f 73 2f 70 6f 6c  os.net/repos/pol
4660: 65 6d 79 2f 64 6f 63 2f 74 69 70 2f 64 6f 63 2f  emy/doc/tip/doc/
4670: 61 73 74 2e 68 74 6d 6c 22 3e 70 6f 6c 65 6d 79  ast.html">polemy
4680: 2e 61 73 74 3c 2f 61 3e 0a e3 81 ae e3 83 9a e3  .ast</a>........
4690: 83 bc e3 82 b8 e3 82 92 e3 81 94 e8 a6 a7 e4 b8  ................
46a0: 8b e3 81 95 e3 81 84 e3 80 82 e4 be 8b e3 81 88  ................
46b0: e3 81 b0 e5 a4 89 e6 95 b0 e5 90 8d e3 82 92 e8  ................
46c0: a1 a8 e3 81 99 20 3c 63 6f 64 65 3e 56 61 72 3c  ..... <code>Var<
46d0: 2f 63 6f 64 65 3e 20 e3 82 af e3 83 a9 e3 82 b9  /code> .........
46e0: e3 81 ab e3 81 af e3 80 81 0a e7 b6 99 e6 89 bf  ................
46f0: e3 81 ae e5 88 86 e3 82 82 e5 90 88 e3 82 8f e3  ................
4700: 81 9b e3 81 a6 0a 3c 74 74 3e 3c 61 20 68 72 65  ......<tt><a hre
4710: 66 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 6b 6d  f="http://www.km
4720: 6f 6e 6f 73 2e 6e 65 74 2f 72 65 70 6f 73 2f 70  onos.net/repos/p
4730: 6f 6c 65 6d 79 2f 64 6f 63 2f 74 69 70 2f 64 6f  olemy/doc/tip/do
4740: 63 2f 66 61 69 6c 75 72 65 2e 68 74 6d 6c 22 3e  c/failure.html">
4750: 4c 65 78 50 6f 73 69 74 69 6f 6e 3c 2f 61 3e 20  LexPosition</a> 
4760: 70 6f 73 3b 3c 2f 74 74 3e 0a e3 81 a8 20 3c 74  pos;</tt>.... <t
4770: 74 3e 73 74 72 69 6e 67 20 6e 61 6d 65 3b 3c 2f  t>string name;</
4780: 74 74 3e 20 e3 81 ae ef bc 92 e3 81 a4 e3 81 ae  tt> ............
4790: e3 83 a1 e3 83 b3 e3 83 90 e3 81 8c e3 81 82 e3  ................
47a0: 82 8b e3 81 ae e3 81 a7 0a 3c 2f 70 3e 0a 3c 70  .........</p>.<p
47b0: 72 65 3e 0a 20 20 20 20 7b 20 69 73 3a 20 20 20  re>.    { is:   
47c0: 22 56 61 72 22 2c 0a 20 20 20 20 20 20 70 6f 73  "Var",.      pos
47d0: 3a 20 20 7b 66 69 6c 65 6e 61 6d 65 3a 22 66 6f  :  {filename:"fo
47e0: 6f 2e 70 6d 79 22 2c 20 6c 69 6e 65 6e 6f 3a 31  o.pmy", lineno:1
47f0: 32 33 2c 20 63 6f 6c 75 6d 6e 3a 34 35 7d 2c 0a  23, column:45},.
4800: 20 20 20 20 20 20 6e 61 6d 65 3a 20 22 78 22 20        name: "x" 
4810: 7d 0a 3c 2f 70 72 65 3e 0a 3c 70 3e 0a e3 81 93  }.</pre>.<p>....
4820: e3 82 93 e3 81 aa e6 84 9f e3 81 98 e3 81 ae e3  ................
4830: 83 86 e3 83 bc e3 83 96 e3 83 ab e3 81 ab e3 81  ................
4840: aa e3 82 8a e3 81 be e3 81 99 e3 80 82 0a e3 82  ................
4850: af e3 83 a9 e3 82 b9 e5 90 8d e3 81 8c 20 3c 74  ............. <t
4860: 74 3e 69 73 3c 2f 74 74 3e 20 e3 83 95 e3 82 a3  t>is</tt> ......
4870: e3 83 bc e3 83 ab e3 83 89 e3 81 ab e3 80 81 e3  ................
4880: 83 a1 e3 83 b3 e3 83 90 e5 a4 89 e6 95 b0 e3 81  ................
4890: af e3 81 9d e3 81 ae e3 81 be e3 81 be e3 81 ae  ................
48a0: e5 90 8d e5 89 8d e3 81 a7 e5 85 a5 e3 82 8a e3  ................
48b0: 81 be e3 81 99 e3 80 82 0a e9 85 8d e5 88 97 e3  ................
48c0: 83 a1 e3 83 b3 e3 83 90 e3 81 af 20 63 6f 6e 73  ........... cons
48d0: 20 e3 83 aa e3 82 b9 e3 83 88 e3 81 ab e3 81 aa   ...............
48e0: e3 81 a3 e3 81 a6 e5 85 a5 e3 81 a3 e3 81 a6 e3  ................
48f0: 81 8d e3 81 be e3 81 99 e3 80 82 0a 3c 2f 70 3e  ............</p>
4900: 0a 29 29 0a 24 28 53 45 43 54 49 4f 4e 20 e5 be  .)).$(SECTION ..
4910: ae e5 a6 99 e3 81 aa e6 8c 99 e5 8b 95 2c 20 24  ............., $
4920: 28 53 45 43 42 4f 44 59 0a 3c 70 72 65 3e 0a 20  (SECBODY.<pre>. 
4930: 20 20 28 72 61 77 6d 61 63 72 6f 29 20 e3 83 ac    (rawmacro) ...
4940: e3 82 a4 e3 83 a4 e3 81 ae e8 a9 b1 0a 0a 20 20  ..............  
4950: 20 20 20 20 5b 5b 6c 69 6d 69 74 61 74 69 6f 6e      [[limitation
4960: 73 5d 5d 0a 0a 20 20 20 54 68 69 73 20 40 6d 61  s]]..   This @ma
4970: 63 72 6f 20 6c 61 79 65 72 20 69 73 20 61 20 76  cro layer is a v
4980: 65 72 79 20 70 72 69 6d 69 74 69 76 65 20 6f 6e  ery primitive on
4990: 65 2c 20 61 6e 64 20 6e 6f 74 20 61 20 70 65 72  e, and not a per
49a0: 66 65 63 74 20 6d 61 63 72 6f 20 6c 61 6e 67 75  fect macro langu
49b0: 61 67 65 2e 0a 20 20 20 54 77 6f 20 6d 61 6a 6f  age..   Two majo
49c0: 72 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20 61 72  r limitations ar
49d0: 65 20 73 65 65 6e 20 69 6e 20 74 68 65 20 66 6f  e seen in the fo
49e0: 6c 6c 6f 77 69 6e 67 20 22 69 74 22 20 65 78 61  llowing "it" exa
49f0: 6d 70 6c 65 2e 0a 0a 20 20 20 20 20 3e 3e 20 40  mple...     >> @
4a00: 6d 61 63 72 6f 20 4c 65 74 49 74 42 65 28 78 2c  macro LetItBe(x,
4a10: 20 79 29 20 7b 20 6c 65 74 20 69 74 20 3d 20 78   y) { let it = x
4a20: 20 69 6e 20 79 20 7d 3b 0a 0a 20 20 20 54 68 65   in y };..   The
4a30: 20 76 61 72 69 61 62 6c 65 20 6e 61 6d 65 20 69   variable name i
4a40: 73 20 6e 6f 74 20 68 79 67 65 6e 69 63 2c 20 61  s not hygenic, a
4a50: 6e 64 20 73 6f 20 77 69 74 68 6f 75 74 20 61 6e  nd so without an
4a60: 79 20 65 66 66 6f 72 74 2c 20 74 68 65 20 73 79  y effort, the sy
4a70: 6e 74 61 78 20 74 72 65 65 20 22 79 22 0a 20 20  ntax tree "y".  
4a80: 20 63 61 6e 20 61 63 63 65 73 73 20 74 68 65 20   can access the 
4a90: 6f 75 74 65 72 20 76 61 72 69 61 62 6c 65 20 22  outer variable "
4aa0: 69 74 22 2e 0a 0a 20 20 20 20 20 3e 3e 20 64 65  it"...     >> de
4ab0: 66 20 66 6f 6f 28 29 20 7b 20 4c 65 74 49 74 42  f foo() { LetItB
4ac0: 65 28 20 31 2b 32 2b 33 2c 20 69 74 2a 69 74 20  e( 1+2+3, it*it 
4ad0: 29 20 7d 0a 20 20 20 20 20 3e 3e 20 66 6f 6f 28  ) }.     >> foo(
4ae0: 29 0a 20 20 20 20 20 33 36 0a 0a 20 20 20 4f 66  ).     36..   Of
4af0: 20 63 6f 75 72 73 65 2c 20 74 68 69 73 20 69 73   course, this is
4b00: 20 6e 6f 74 20 6a 75 73 74 20 61 20 6c 69 6d 69   not just a limi
4b10: 74 61 74 69 6f 6e 3b 20 69 74 20 63 61 6e 20 73  tation; it can s
4b20: 6f 6d 65 74 69 6d 65 73 20 61 6c 6c 6f 77 20 75  ometimes allow u
4b30: 73 20 74 6f 20 77 72 69 74 65 0a 20 20 20 6d 61  s to write.   ma
4b40: 6e 79 20 69 6e 74 65 72 65 73 74 69 6e 67 20 6d  ny interesting m
4b50: 61 63 72 6f 73 2e 0a 0a 20 20 20 54 68 65 20 6f  acros...   The o
4b60: 74 68 65 72 20 70 72 6f 62 6c 65 6d 20 69 73 20  ther problem is 
4b70: 74 68 61 74 20 74 68 65 20 6d 61 63 72 6f 20 65  that the macro e
4b80: 78 70 61 6e 73 69 6f 6e 20 69 73 20 6f 6e 6c 79  xpansion is only
4b90: 20 64 6f 6e 65 20 61 74 20 66 75 6e 63 74 69 6f   done at functio
4ba0: 6e 20 73 74 61 72 74 75 70 2e 0a 20 20 20 53 6f  n startup..   So
4bb0: 20 0a 0a 20 20 20 20 20 3e 3e 20 4c 65 74 49 74   ..     >> LetIt
4bc0: 42 65 28 20 31 2b 32 2b 33 2c 20 69 74 2a 69 74  Be( 1+2+3, it*it
4bd0: 20 29 0a 20 20 20 20 20 2e 2e 2e 5c 76 61 6c 75   ).     ...\valu
4be0: 65 2e 64 28 31 37 33 29 3a 20 5b 3c 52 45 50 4c  e.d(173): [<REPL
4bf0: 3e 3a 32 34 3a 31 5d 20 76 61 72 69 61 62 6c 65  >:24:1] variable
4c00: 20 4c 65 74 49 74 42 65 20 69 73 20 6e 6f 74 20   LetItBe is not 
4c10: 73 65 74 20 69 6e 20 6c 61 79 65 72 20 40 76 61  set in layer @va
4c20: 6c 75 65 0a 0a 20 20 20 79 6f 75 20 63 61 6e 6e  lue..   you cann
4c30: 6f 74 20 64 69 72 65 63 74 6c 79 20 75 73 65 20  ot directly use 
4c40: 74 68 65 20 6d 61 63 72 6f 20 69 6e 20 74 68 65  the macro in the
4c50: 20 73 61 6d 65 20 73 63 6f 70 65 20 61 73 20 74   same scope as t
4c60: 68 65 20 64 65 66 69 6e 69 74 69 6f 6e 2e 0a 20  he definition.. 
4c70: 20 20 59 6f 75 20 6e 65 65 64 20 74 6f 20 77 72    You need to wr
4c80: 61 70 20 69 74 20 75 70 20 69 6e 20 61 20 66 75  ap it up in a fu
4c90: 6e 63 74 69 6f 6e 20 28 6c 69 6b 65 20 74 68 65  nction (like the
4ca0: 20 66 6f 6f 28 29 20 69 6e 20 74 68 65 20 61 62   foo() in the ab
4cb0: 6f 76 65 20 65 78 61 6d 70 6c 65 29 2e 0a 3c 2f  ove example)..</
4cc0: 70 72 65 3e 0a 29 29 0a 29 0a 29 29 0a 0a 0a 24  pre>.)).).))...$
4cd0: 28 53 45 43 54 49 4f 4e 20 42 75 69 6c 74 2d 69  (SECTION Built-i
4ce0: 6e 20 50 72 69 6d 69 74 69 76 65 73 2c 20 24 28  n Primitives, $(
4cf0: 53 45 43 42 4f 44 59 0a 3c 70 3e 0a e7 b5 84 e3  SECBODY.<p>.....
4d00: 81 bf e8 be bc e3 81 bf e9 96 a2 e6 95 b0 e3 83  ................
4d10: bb e5 a4 89 e6 95 b0 e3 81 ae e4 b8 80 e8 a6 a7  ................
4d20: e3 80 82 0a 3c 2f 70 3e 0a 24 28 44 44 4f 43 5f  ....</p>.$(DDOC_
4d30: 4d 45 4d 42 45 52 53 0a 0a 24 28 53 45 43 54 49  MEMBERS..$(SECTI
4d40: 4f 4e 20 e3 83 86 e3 83 bc e3 83 96 e3 83 ab e6  ON .............
4d50: 93 8d e4 bd 9c 2c 20 24 28 53 45 43 42 4f 44 59  ....., $(SECBODY
4d60: 0a 20 20 24 28 54 41 42 4c 45 0a 20 20 20 20 24  .  $(TABLE.    $
4d70: 28 54 52 20 24 28 54 48 20 7b 7d 29 20 24 28 54  (TR $(TH {}) $(T
4d80: 44 20 28 29 29 20 24 28 54 44 20 e7 a9 ba e3 81  D ()) $(TD .....
4d90: ae e3 83 86 e3 83 bc e3 83 96 e3 83 ab e3 82 92  ................
4da0: e4 bd 9c e3 82 8b 29 29 0a 20 20 20 20 24 28 54  ......)).    $(T
4db0: 52 20 24 28 54 48 20 2e 29 20 24 28 54 44 20 28  R $(TH .) $(TD (
4dc0: 74 2c 20 73 29 29 20 24 28 54 44 20 e3 83 86 e3  t, s)) $(TD ....
4dd0: 83 bc e3 83 96 e3 83 ab 20 74 20 e3 81 ae e5 90  ........ t .....
4de0: 8d e5 89 8d 20 73 20 e3 81 ae e3 83 95 e3 82 a3  .... s .........
4df0: e3 83 bc e3 83 ab e3 83 89 e3 81 ae e5 80 a4 e3  ................
4e00: 82 92 e5 8f 96 e5 be 97 e3 80 82 e3 81 aa e3 81  ................
4e10: 91 e3 82 8c e3 81 b0 20 3c 74 74 3e 75 6e 64 65  ....... <tt>unde
4e20: 66 69 6e 65 64 3c 2f 74 74 3e 29 29 0a 20 20 20  fined</tt>)).   
4e30: 20 24 28 54 52 20 24 28 54 48 20 2e 3f 29 20 24   $(TR $(TH .?) $
4e40: 28 54 44 20 28 74 2c 20 73 29 29 20 24 28 54 44  (TD (t, s)) $(TD
4e50: 20 e3 83 86 e3 83 bc e3 83 96 e3 83 ab 20 74 20   ............ t 
4e60: e3 81 ab e5 90 8d e5 89 8d 20 73 20 e3 81 ae e3  ......... s ....
4e70: 83 95 e3 82 a3 e3 83 bc e3 83 ab e3 83 89 e3 81  ................
4e80: 8c e3 81 82 e3 82 8c e3 81 b0 20 31 e3 80 81 e3  .......... 1....
4e90: 81 aa e3 81 91 e3 82 8c e3 81 b0 20 30 29 29 0a  ........... 0)).
4ea0: 20 20 20 20 24 28 54 52 20 24 28 54 48 20 2e 3d      $(TR $(TH .=
4eb0: 29 20 24 28 54 44 20 28 74 2c 20 73 2c 20 76 29  ) $(TD (t, s, v)
4ec0: 29 20 24 28 54 44 20 e3 83 86 e3 83 bc e3 83 96  ) $(TD .........
4ed0: e3 83 ab 20 74 20 e3 82 92 e8 a6 aa e3 81 ab e6  ... t ..........
4ee0: 8c 81 e3 81 a1 e3 80 81 e5 90 8d e5 89 8d 20 73  .............. s
4ef0: 20 e3 81 ae e3 83 95 e3 82 a3 e3 83 bc e3 83 ab   ...............
4f00: e3 83 89 e3 81 ab 20 76 20 e3 81 8c e5 85 a5 e3  ...... v .......
4f10: 81 a3 e3 81 9f e3 83 86 e3 83 bc e3 83 96 e3 83  ................
4f20: ab e3 82 92 e4 bd 9c e3 82 8b 29 29 0a 20 20 29  ..........)).  )
4f30: 0a 29 29 0a 3c 62 72 20 2f 3e 0a 0a 24 28 53 45  .)).<br />..$(SE
4f40: 43 54 49 4f 4e 20 e5 88 b6 e5 be a1 e3 83 95 e3  CTION ..........
4f50: 83 ad e3 83 bc 2c 20 24 28 53 45 43 42 4f 44 59  ....., $(SECBODY
4f60: 0a 20 20 24 28 54 41 42 4c 45 0a 20 20 20 20 24  .  $(TABLE.    $
4f70: 28 54 52 20 24 28 54 48 20 69 66 29 20 24 28 54  (TR $(TH if) $(T
4f80: 44 20 28 6e 2c 20 66 74 2c 20 66 65 29 29 20 24  D (n, ft, fe)) $
4f90: 28 54 44 20 6e 20 e3 81 8c e9 9d 9e 20 30 20 e3  (TD n ...... 0 .
4fa0: 81 aa e3 82 89 20 3c 74 74 3e 66 74 28 29 3c 2f  ..... <tt>ft()</
4fb0: 74 3e e3 80 81 30 20 e3 81 aa e3 82 89 20 3c 74  t>...0 ...... <t
4fc0: 74 3e 66 65 28 29 3c 2f 74 74 3e 20 e3 82 92 e5  t>fe()</tt> ....
4fd0: ae 9f e8 a1 8c 29 29 0a 20 20 29 0a 29 29 0a 3c  .....)).  ).)).<
4fe0: 62 72 20 2f 3e 0a 0a 24 28 53 45 43 54 49 4f 4e  br />..$(SECTION
4ff0: 20 e6 bc 94 e7 ae 97 2c 20 24 28 53 45 43 42 4f   ......, $(SECBO
5000: 44 59 0a 20 20 24 28 54 41 42 4c 45 0a 20 20 20  DY.  $(TABLE.   
5010: 20 24 28 54 52 20 24 28 54 48 20 2b 29 20 24 28   $(TR $(TH +) $(
5020: 54 44 20 28 6e 2c 20 6d 29 29 20 24 28 54 44 20  TD (n, m)) $(TD 
5030: e6 95 b4 e6 95 b0 20 6e 20 e3 81 a8 e6 95 b4 e6  ...... n .......
5040: 95 b0 20 6d 20 e3 82 92 e8 b6 b3 e3 81 97 e3 81  .. m ...........
5050: a6 e8 bf 94 e3 81 99 29 29 0a 20 20 20 20 24 28  .......)).    $(
5060: 54 52 20 24 28 54 48 20 2d 29 20 24 28 54 44 20  TR $(TH -) $(TD 
5070: 28 6e 2c 20 6d 29 29 20 24 28 54 44 20 e6 95 b4  (n, m)) $(TD ...
5080: e6 95 b0 e3 81 ae e5 bc 95 e3 81 8d e7 ae 97 29  ...............)
5090: 29 0a 20 20 20 20 24 28 54 52 20 24 28 54 48 20  ).    $(TR $(TH 
50a0: 2a 29 20 24 28 54 44 20 28 6e 2c 20 6d 29 29 20  *) $(TD (n, m)) 
50b0: 24 28 54 44 20 e6 95 b4 e6 95 b0 e3 81 ae e6 8e  $(TD ...........
50c0: 9b e3 81 91 e7 ae 97 29 29 0a 20 20 20 20 24 28  .......)).    $(
50d0: 54 52 20 24 28 54 48 20 2f 29 20 24 28 54 44 20  TR $(TH /) $(TD 
50e0: 28 6e 2c 20 6d 29 29 20 24 28 54 44 20 e6 95 b4  (n, m)) $(TD ...
50f0: e6 95 b0 e3 81 ae e5 89 b2 e3 82 8a e7 ae 97 29  ...............)
5100: 29 0a 20 20 20 20 24 28 54 52 20 24 28 54 48 20  ).    $(TR $(TH 
5110: 25 29 20 24 28 54 44 20 28 6e 2c 20 6d 29 29 20  %) $(TD (n, m)) 
5120: 24 28 54 44 20 e6 95 b4 e6 95 b0 e3 81 ae e5 89  $(TD ...........
5130: b0 e4 bd 99 29 29 0a 20 20 20 20 24 28 54 52 20  ....)).    $(TR 
5140: 24 28 54 48 20 26 61 6d 70 3b 26 61 6d 70 3b 29  $(TH &amp;&amp;)
5150: 20 24 28 54 44 20 28 6e 2c 20 6d 29 29 20 24 28   $(TD (n, m)) $(
5160: 54 44 20 e6 95 b4 e6 95 b0 20 6e 20 e3 81 a8 20  TD ...... n ... 
5170: 6d 20 e3 81 8c e4 b8 a1 e6 96 b9 e9 9d 9e 20 30  m ............ 0
5180: 20 e3 81 aa e3 82 89 20 31 e3 80 81 e3 81 9d e3   ...... 1.......
5190: 82 8c e4 bb a5 e5 a4 96 e3 81 a7 e3 81 af 20 30  .............. 0
51a0: 29 29 0a 20 20 20 20 24 28 54 52 20 24 28 54 48  )).    $(TR $(TH
51b0: 20 7c 7c 29 20 24 28 54 44 20 28 6e 2c 20 6d 29   ||) $(TD (n, m)
51c0: 29 20 24 28 54 44 20 e6 95 b4 e6 95 b0 20 6e 20  ) $(TD ...... n 
51d0: e3 81 a8 20 6d 20 e3 81 8c e3 81 a9 e3 81 a1 e3  ... m ..........
51e0: 82 89 e3 81 8b e9 9d 9e 20 30 20 e3 81 aa e3 82  ........ 0 .....
51f0: 89 20 31 e3 80 81 e3 81 9d e3 82 8c e4 bb a5 e5  . 1.............
5200: a4 96 e3 81 a7 e3 81 af 20 30 29 29 0a 20 20 20  ........ 0)).   
5210: 20 24 28 54 52 20 24 28 54 48 20 7e 29 20 24 28   $(TR $(TH ~) $(
5220: 54 44 20 28 61 2c 20 62 29 29 20 24 28 54 44 20  TD (a, b)) $(TD 
5230: 61 20 e3 81 a8 20 62 20 e3 82 92 e6 96 87 e5 ad  a ... b ........
5240: 97 e5 88 97 e5 8c 96 e3 81 97 e3 81 a6 e7 b5 90  ................
5250: e5 90 88 29 29 0a 20 20 20 20 24 28 54 52 20 24  ...)).    $(TR $
5260: 28 54 48 20 26 6c 74 3b 29 20 24 28 54 44 20 28  (TH &lt;) $(TD (
5270: 61 2c 20 62 29 29 20 24 28 54 44 20 61 20 e3 81  a, b)) $(TD a ..
5280: a8 20 62 20 e3 82 92 e6 af 94 e8 bc 83 29 29 0a  . b .........)).
5290: 20 20 20 20 24 28 54 52 20 24 28 54 48 20 26 6c      $(TR $(TH &l
52a0: 74 3b 3d 29 20 24 28 54 44 20 28 61 2c 20 62 29  t;=) $(TD (a, b)
52b0: 29 20 24 28 54 44 20 61 20 e3 81 a8 20 62 20 e3  ) $(TD a ... b .
52c0: 82 92 e6 af 94 e8 bc 83 29 29 0a 20 20 20 20 24  ........)).    $
52d0: 28 54 52 20 24 28 54 48 20 26 67 74 3b 29 20 24  (TR $(TH &gt;) $
52e0: 28 54 44 20 28 61 2c 20 62 29 29 20 24 28 54 44  (TD (a, b)) $(TD
52f0: 20 61 20 e3 81 a8 20 62 20 e3 82 92 e6 af 94 e8   a ... b .......
5300: bc 83 29 29 0a 20 20 20 20 24 28 54 52 20 24 28  ..)).    $(TR $(
5310: 54 48 20 26 67 74 3b 3d 29 20 24 28 54 44 20 28  TH &gt;=) $(TD (
5320: 61 2c 20 62 29 29 20 24 28 54 44 20 61 20 e3 81  a, b)) $(TD a ..
5330: a8 20 62 20 e3 82 92 e6 af 94 e8 bc 83 29 29 0a  . b .........)).
5340: 20 20 20 20 24 28 54 52 20 24 28 54 48 20 3d 3d      $(TR $(TH ==
5350: 29 20 24 28 54 44 20 28 61 2c 20 62 29 29 20 24  ) $(TD (a, b)) $
5360: 28 54 44 20 61 20 e3 81 a8 20 62 20 e3 82 92 e6  (TD a ... b ....
5370: af 94 e8 bc 83 29 29 0a 20 20 20 20 24 28 54 52  .....)).    $(TR
5380: 20 24 28 54 48 20 21 3d 29 20 24 28 54 44 20 28   $(TH !=) $(TD (
5390: 61 2c 20 62 29 29 20 24 28 54 44 20 61 20 e3 81  a, b)) $(TD a ..
53a0: a8 20 62 20 e3 82 92 e6 af 94 e8 bc 83 29 29 0a  . b .........)).
53b0: 20 20 29 0a 3c 70 3e 0a e6 b3 a8 e6 84 8f e7 82    ).<p>.........
53c0: b9 e3 81 a8 e3 81 97 e3 81 a6 e3 80 81 e4 bd 9c  ................
53d0: e8 80 85 e3 81 ae e8 b6 a3 e5 91 b3 e3 81 ae e5  ................
53e0: 95 8f e9 a1 8c e3 81 a7 e3 80 81 3c 74 74 3e 26  ...........<tt>&
53f0: 61 6d 70 3b 26 61 6d 70 3b 3c 2f 74 74 3e 20 e3  amp;&amp;</tt> .
5400: 81 a8 20 3c 74 74 3e 7c 7c 3c 2f 74 74 3e 20 e3  .. <tt>||</tt> .
5410: 81 af 20 73 68 6f 72 74 2d 63 69 72 63 75 69 74  .. short-circuit
5420: 20 e8 a9 95 e4 be a1 e3 82 92 e3 81 97 e3 81 be   ...............
5430: e3 81 9b e3 82 93 e3 80 82 0a e6 95 b4 e6 95 b0  ................
5440: e6 bc 94 e7 ae 97 e3 81 ae e7 a8 ae e9 a1 9e e3  ................
5450: 81 8c e5 b0 91 e3 81 aa e3 81 84 e3 81 ae e3 81  ................
5460: af e3 80 81 44 20 e8 a8 80 e8 aa 9e e3 81 ae 20  ....D ......... 
5470: 73 74 64 2e 62 69 67 69 6e 74 20 e3 81 8c e3 83  std.bigint .....
5480: 93 e3 83 83 e3 83 88 e6 bc 94 e7 ae 97 e3 81 aa  ................
5490: e3 81 a9 e3 82 92 e3 82 b5 e3 83 9d e3 83 bc e3  ................
54a0: 83 88 e3 81 97 e3 81 a6 e3 81 aa e3 81 84 e3 81  ................
54b0: 9f e3 82 81 e3 81 a7 e3 81 99 e3 80 82 0a e6 96  ................
54c0: 87 e5 ad 97 e5 88 97 e3 81 8c e7 b5 90 e5 90 88  ................
54d0: e3 81 97 e3 81 8b e3 81 a7 e3 81 8d e3 81 aa e3  ................
54e0: 81 84 e3 81 ae e3 81 af e3 80 81 e5 8d 98 e3 81  ................
54f0: ab e6 89 8b e6 8a 9c e3 81 8d e3 81 a7 e3 81 99  ................
5500: e3 80 82 0a 3c 2f 70 3e 0a 29 29 0a 0a 24 28 53  ....</p>.))..$(S
5510: 45 43 54 49 4f 4e 20 e5 a4 96 e9 83 a8 e3 81 a8  ECTION .........
5520: e3 81 ae e3 82 84 e3 82 8a e3 81 a8 e3 82 8a 2c  ...............,
5530: 20 24 28 53 45 43 42 4f 44 59 0a 20 20 24 28 54   $(SECBODY.  $(T
5540: 41 42 4c 45 0a 20 20 20 20 24 28 54 52 20 24 28  ABLE.    $(TR $(
5550: 54 48 20 70 72 69 6e 74 29 20 24 28 54 44 20 28  TH print) $(TD (
5560: 61 29 29 20 24 28 54 44 20 61 20 e3 82 92 e6 96  a)) $(TD a .....
5570: 87 e5 ad 97 e5 88 97 e5 8c 96 e6 a8 99 e6 ba 96  ................
5580: e5 87 ba e5 8a 9b e3 81 ab e6 94 b9 e8 a1 8c e4  ................
5590: bb 98 e3 81 8d e3 81 a7 e8 a1 a8 e7 a4 ba 29 29  ..............))
55a0: 0a 20 20 20 20 24 28 54 52 20 24 28 54 48 20 61  .    $(TR $(TH a
55b0: 72 67 76 29 20 24 28 54 44 20 29 20 24 28 54 44  rgv) $(TD ) $(TD
55c0: 20 e3 82 b9 e3 82 af e3 83 aa e3 83 97 e3 83 88   ...............
55d0: e3 81 ab e6 b8 a1 e3 81 95 e3 82 8c e3 81 9f e5  ................
55e0: bc 95 e6 95 b0 e6 96 87 e5 ad 97 e5 88 97 e3 81  ................
55f0: ae 63 6f 6e 73 e3 83 aa e3 82 b9 e3 83 88 29 29  .cons.........))
5600: 0a 20 20 29 0a 29 29 0a 3c 62 72 20 2f 3e 0a 0a  .  ).)).<br />..
5610: 24 28 53 45 43 54 49 4f 4e 20 e3 83 87 e3 83 bc  $(SECTION ......
5620: e3 82 bf e5 9e 8b e5 88 a4 e5 ae 9a 2c 20 24 28  ............, $(
5630: 53 45 43 42 4f 44 59 0a 20 20 24 28 54 41 42 4c  SECBODY.  $(TABL
5640: 45 0a 20 20 20 20 24 28 54 52 20 24 28 54 48 20  E.    $(TR $(TH 
5650: 5f 69 73 69 6e 74 29 20 24 28 54 44 20 28 61 29  _isint) $(TD (a)
5660: 29 20 24 28 54 44 20 61 20 e3 81 8c e6 95 b4 e6  ) $(TD a .......
5670: 95 b0 e3 81 aa e3 82 89 20 31 e3 80 81 e3 81 a7  ........ 1......
5680: e3 81 aa e3 81 91 e3 82 8c e3 81 b0 20 30 29 29  ............ 0))
5690: 0a 20 20 20 20 24 28 54 52 20 24 28 54 48 20 5f  .    $(TR $(TH _
56a0: 69 73 73 74 72 29 20 24 28 54 44 20 28 61 29 29  isstr) $(TD (a))
56b0: 20 24 28 54 44 20 61 20 e3 81 8c e6 96 87 e5 ad   $(TD a ........
56c0: 97 e5 88 97 e3 81 aa e3 82 89 20 31 e3 80 81 e3  .......... 1....
56d0: 81 a7 e3 81 aa e3 81 91 e3 82 8c e3 81 b0 20 30  .............. 0
56e0: 29 29 0a 20 20 20 20 24 28 54 52 20 24 28 54 48  )).    $(TR $(TH
56f0: 20 5f 69 73 66 75 6e 29 20 24 28 54 44 20 28 61   _isfun) $(TD (a
5700: 29 29 20 24 28 54 44 20 61 20 e3 81 8c e9 96 a2  )) $(TD a ......
5710: e6 95 b0 e3 81 aa e3 82 89 20 31 e3 80 81 e3 81  ......... 1.....
5720: a7 e3 81 aa e3 81 91 e3 82 8c e3 81 b0 20 30 29  ............. 0)
5730: 29 0a 20 20 20 20 24 28 54 52 20 24 28 54 48 20  ).    $(TR $(TH 
5740: 5f 69 73 74 61 62 6c 65 29 20 24 28 54 44 20 28  _istable) $(TD (
5750: 61 29 29 20 24 28 54 44 20 61 20 e3 81 8c e3 83  a)) $(TD a .....
5760: 86 e3 83 bc e3 83 96 e3 83 ab e3 81 aa e3 82 89  ................
5770: 20 31 e3 80 81 e3 81 a7 e3 81 aa e3 81 91 e3 82   1..............
5780: 8c e3 81 b0 20 30 29 29 0a 20 20 20 20 24 28 54  .... 0)).    $(T
5790: 52 20 24 28 54 48 20 5f 69 73 75 6e 64 65 66 69  R $(TH _isundefi
57a0: 6e 65 64 29 20 24 28 54 44 20 28 61 29 29 20 24  ned) $(TD (a)) $
57b0: 28 54 44 20 61 20 e3 81 8c e6 9c aa e5 ae 9a e7  (TD a ..........
57c0: be a9 e5 80 a4 e3 81 aa e3 82 89 20 31 e3 80 81  ........... 1...
57d0: e3 81 a7 e3 81 aa e3 81 91 e3 82 8c e3 81 b0 20  ............... 
57e0: 30 29 29 0a 20 20 29 0a 29 29 0a 29 0a 29 29 0a  0)).  ).)).).)).
57f0: 0a 29 0a 4d 61 63 72 6f 73 3a 0a 20 20 20 20 54  .).Macros:.    T
5800: 49 54 4c 45 3d 50 6f 6c 65 6d 79 20 52 65 66 65  ITLE=Polemy Refe
5810: 72 65 6e 63 65 20 4d 61 6e 75 61 6c 0a 20 20 20  rence Manual.   
5820: 20 44 4f 43 46 49 4c 45 4e 41 4d 45 3d 69 6e 64   DOCFILENAME=ind
5830: 65 78 2e 68 74 6d 6c 0a 20 20 20 20 53 45 43 54  ex.html.    SECT
5840: 49 4f 4e 3d 24 28 44 44 4f 43 5f 44 45 43 4c 20  ION=$(DDOC_DECL 
5850: 24 28 44 44 4f 43 5f 50 53 59 4d 42 4f 4c 20 24  $(DDOC_PSYMBOL $
5860: 31 29 29 20 24 28 44 44 4f 43 5f 44 45 43 4c 5f  1)) $(DDOC_DECL_
5870: 44 44 20 24 32 29 0a 20 20 20 20 53 45 43 42 4f  DD $2).    SECBO
5880: 44 59 3d 24 30 0a                                DY=$0.