Artifact b31646ec7576a8a64315253973b7157843742e22:
0000: 40 6d 61 63 72 6f 20 74 77 69 63 65 20 3d 20 66 @macro twice = f
0010: 75 6e 28 78 29 20 7b 20 78 3b 20 78 20 7d 3b 0a un(x) { x; x };.
0020: 40 6d 61 63 72 6f 20 6d 61 78 28 78 2c 79 29 20 @macro max(x,y)
0030: 7b 0a 20 20 76 61 72 20 5f 78 20 3d 20 78 3b 20 {. var _x = x;
0040: 23 20 6e 6f 20 68 79 67 65 6e 69 63 20 6d 61 63 # no hygenic mac
0050: 72 6f 20 62 74 77 2e 2e 2e 2e 0a 20 20 76 61 72 ro btw..... var
0060: 20 5f 79 20 3d 20 79 3b 20 23 20 6e 6f 20 68 79 _y = y; # no hy
0070: 67 65 6e 69 63 20 6d 61 63 72 6f 20 62 74 77 2e genic macro btw.
0080: 2e 2e 2e 0a 20 20 69 66 28 5f 78 3c 5f 79 29 74 .... if(_x<_y)t
0090: 68 65 6e 20 5f 79 20 65 6c 73 65 20 5f 78 0a 7d hen _y else _x.}
00a0: 3b 0a 64 65 66 20 6d 61 78 4e 6f 72 6d 61 6c 28 ;.def maxNormal(
00b0: 78 2c 79 29 20 7b 0a 20 20 69 66 28 78 3c 79 29 x,y) {. if(x<y)
00c0: 0a 09 74 68 65 6e 3a 20 79 0a 09 65 6c 73 65 3a ..then: y..else:
00d0: 20 78 0a 7d 3b 0a 40 6d 61 63 72 6f 20 6d 61 78 x.};.@macro max
00e0: 42 61 64 28 78 2c 79 29 20 7b 0a 20 20 69 66 20 Bad(x,y) {. if
00f0: 78 3c 79 3a 20 79 20 65 6c 73 65 3a 20 78 0a 7d x<y: y else: x.}
0100: 3b 0a 0a 40 6d 61 63 72 6f 20 4c 65 74 49 74 42 ;..@macro LetItB
0110: 65 28 78 2c 20 79 29 20 7b 20 6c 65 74 20 69 74 e(x, y) { let it
0120: 20 3d 20 78 20 69 6e 20 79 20 7d 3b 0a 0a 40 6d = x in y };..@m
0130: 61 63 72 6f 20 70 6f 77 31 30 28 78 29 20 7b 0a acro pow10(x) {.
0140: 20 20 40 76 61 6c 75 65 28 0a 20 20 20 20 64 65 @value(. de
0150: 66 20 70 6f 77 28 79 2c 20 6e 29 20 7b 0a 20 20 f pow(y, n) {.
0160: 20 20 20 20 69 66 28 20 6e 20 3d 3d 20 31 20 29 if( n == 1 )
0170: 20 74 68 65 6e 20 79 0a 20 20 20 20 20 20 65 6c then y. el
0180: 73 65 0a 20 20 20 20 20 20 20 20 40 6d 61 63 72 se. @macr
0190: 6f 28 20 40 76 61 6c 75 65 28 79 29 20 2a 20 40 o( @value(y) * @
01a0: 76 61 6c 75 65 28 70 6f 77 28 79 2c 6e 2d 31 29 value(pow(y,n-1)
01b0: 29 20 29 0a 20 20 20 20 7d 0a 20 20 20 20 69 6e ) ). }. in
01c0: 0a 20 20 20 20 20 20 70 6f 77 28 40 6d 61 63 72 . pow(@macr
01d0: 6f 28 78 2b 31 29 2c 31 30 29 0a 20 20 29 0a 7d o(x+1),10). ).}
01e0: 3b 0a 0a 40 6d 61 63 72 6f 20 70 6f 77 31 30 48 ;..@macro pow10H
01f0: 61 72 64 28 78 29 20 7b 0a 20 20 40 76 61 6c 75 ard(x) {. @valu
0200: 65 28 0a 20 20 20 20 64 65 66 20 70 6f 77 28 78 e(. def pow(x
0210: 2c 20 6e 29 20 7b 0a 20 20 20 20 20 20 69 66 28 , n) {. if(
0220: 20 6e 20 3d 3d 20 31 20 29 20 74 68 65 6e 20 78 n == 1 ) then x
0230: 20 0a 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 . else.
0240: 20 20 20 20 20 40 6d 61 63 72 6f 28 20 40 76 61 @macro( @va
0250: 6c 75 65 28 78 29 20 2a 20 40 76 61 6c 75 65 28 lue(x) * @value(
0260: 70 6f 77 28 78 2c 6e 2d 31 29 29 20 29 0a 20 20 pow(x,n-1)) ).
0270: 20 20 7d 0a 20 20 20 20 69 6e 0a 20 20 20 20 20 }. in.
0280: 20 70 6f 77 28 40 6d 61 63 72 6f 28 78 2b 31 29 pow(@macro(x+1)
0290: 2c 31 30 29 0a 20 20 29 0a 7d 3b 0a 0a 64 65 66 ,10). ).};..def
02a0: 20 70 72 69 6e 74 41 6e 64 52 65 74 75 72 6e 28 printAndReturn(
02b0: 78 29 0a 7b 0a 09 70 72 69 6e 74 28 78 29 3b 0a x).{..print(x);.
02c0: 09 78 0a 7d 3b 0a 0a 64 65 66 20 6d 61 69 6e 28 .x.};..def main(
02d0: 29 0a 7b 0a 09 74 77 69 63 65 28 20 70 72 69 6e ).{..twice( prin
02e0: 74 28 22 66 6f 6f 22 29 20 29 3b 0a 09 70 72 69 t("foo") );..pri
02f0: 6e 74 28 22 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d nt("------------
0300: 2d 2d 22 29 3b 0a 09 70 72 69 6e 74 28 6d 61 78 --");..print(max
0310: 28 70 72 69 6e 74 41 6e 64 52 65 74 75 72 6e 28 (printAndReturn(
0320: 31 30 30 29 2c 70 72 69 6e 74 41 6e 64 52 65 74 100),printAndRet
0330: 75 72 6e 28 32 30 30 29 29 29 3b 0a 09 70 72 69 urn(200)));..pri
0340: 6e 74 28 22 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d nt("------------
0350: 2d 2d 22 29 3b 0a 09 70 72 69 6e 74 28 6d 61 78 --");..print(max
0360: 4e 6f 72 6d 61 6c 28 70 72 69 6e 74 41 6e 64 52 Normal(printAndR
0370: 65 74 75 72 6e 28 31 30 30 29 2c 70 72 69 6e 74 eturn(100),print
0380: 41 6e 64 52 65 74 75 72 6e 28 32 30 30 29 29 29 AndReturn(200)))
0390: 3b 0a 09 70 72 69 6e 74 28 22 2d 2d 2d 2d 2d 2d ;..print("------
03a0: 2d 2d 2d 2d 2d 2d 2d 2d 22 29 3b 0a 09 70 72 69 --------");..pri
03b0: 6e 74 28 6d 61 78 42 61 64 28 70 72 69 6e 74 41 nt(maxBad(printA
03c0: 6e 64 52 65 74 75 72 6e 28 31 30 30 29 2c 70 72 ndReturn(100),pr
03d0: 69 6e 74 41 6e 64 52 65 74 75 72 6e 28 32 30 30 intAndReturn(200
03e0: 29 29 29 3b 0a 09 70 72 69 6e 74 28 22 2d 2d 2d )));..print("---
03f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 22 29 3b 0a 09 -----------");..
0400: 70 72 69 6e 74 28 20 4c 65 74 49 74 42 65 28 20 print( LetItBe(
0410: 31 2b 32 2b 33 2c 20 69 74 2a 69 74 20 29 20 29 1+2+3, it*it ) )
0420: 3b 0a 09 70 72 69 6e 74 28 22 2d 2d 2d 2d 2d 2d ;..print("------
0430: 2d 2d 2d 2d 2d 2d 2d 2d 22 29 3b 0a 09 70 72 69 --------");..pri
0440: 6e 74 28 70 6f 77 31 30 28 31 29 29 3b 0a 09 70 nt(pow10(1));..p
0450: 72 69 6e 74 28 70 6f 77 31 30 28 32 29 29 3b 0a rint(pow10(2));.
0460: 09 70 72 69 6e 74 28 22 2d 2d 2d 2d 2d 2d 2d 2d .print("--------
0470: 2d 2d 2d 2d 2d 2d 22 29 3b 0a 09 70 72 69 6e 74 ------");..print
0480: 28 70 6f 77 31 30 48 61 72 64 28 31 29 29 3b 0a (pow10Hard(1));.
0490: 09 70 72 69 6e 74 28 70 6f 77 31 30 48 61 72 64 .print(pow10Hard
04a0: 28 32 29 29 3b 0a 7d 3b 0a 0a 6d 61 69 6e 28 29 (2));.};..main()
04b0: 3b 0a 0a 40 6d 61 63 72 6f 20 66 6f 6f 28 79 29 ;..@macro foo(y)
04c0: 0a 7b 0a 09 66 75 6e 28 79 29 7b 79 7d 28 33 30 .{..fun(y){y}(30
04d0: 30 29 0a 23 09 6c 65 74 20 79 20 3d 20 33 30 30 0).#.let y = 300
04e0: 20 69 6e 20 79 0a 7d 3b 0a 0a 70 72 69 6e 74 28 in y.};..print(
04f0: 22 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 22 "--------------"
0500: 29 3b 0a 70 72 69 6e 74 28 66 6f 6f 28 32 30 30 );.print(foo(200
0510: 29 29 3b 0a ));.