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>&&</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 &&)
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 <) $(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 >) $
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 >=) $(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;&</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.