Artifact 977cd2f997805f91248e33c424b8dc00b8eb2344:
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 7b .... if(_x<_y){
0090: 5f 79 7d 65 6c 73 65 7b 5f 78 7d 0a 7d 3b 0a 64 _y}else{_x}.};.d
00a0: 65 66 20 6d 61 78 4e 6f 72 6d 61 6c 28 78 2c 79 ef maxNormal(x,y
00b0: 29 20 7b 0a 20 20 69 66 28 78 3c 79 29 7b 79 7d ) {. if(x<y){y}
00c0: 65 6c 73 65 7b 78 7d 0a 7d 3b 0a 40 6d 61 63 72 else{x}.};.@macr
00d0: 6f 20 6d 61 78 42 61 64 28 78 2c 79 29 20 7b 0a o maxBad(x,y) {.
00e0: 20 20 69 66 28 78 3c 79 29 7b 79 7d 65 6c 73 65 if(x<y){y}else
00f0: 7b 78 7d 0a 7d 3b 0a 0a 40 6d 61 63 72 6f 20 4c {x}.};..@macro L
0100: 65 74 49 74 42 65 28 78 2c 20 79 29 20 7b 20 6c etItBe(x, y) { l
0110: 65 74 20 69 74 20 3d 20 78 20 69 6e 20 79 20 7d et it = x in y }
0120: 3b 0a 0a 40 6d 61 63 72 6f 20 70 6f 77 31 30 28 ;..@macro pow10(
0130: 78 29 20 7b 0a 20 20 40 76 61 6c 75 65 28 0a 20 x) {. @value(.
0140: 20 20 20 64 65 66 20 70 6f 77 28 79 2c 20 6e 29 def pow(y, n)
0150: 20 7b 0a 20 20 20 20 20 20 69 66 28 20 6e 20 3d {. if( n =
0160: 3d 20 31 20 29 20 7b 20 79 20 7d 0a 20 20 20 20 = 1 ) { y }.
0170: 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 else {.
0180: 20 40 6d 61 63 72 6f 28 20 40 76 61 6c 75 65 28 @macro( @value(
0190: 79 29 20 2a 20 40 76 61 6c 75 65 28 70 6f 77 28 y) * @value(pow(
01a0: 79 2c 6e 2d 31 29 29 20 29 0a 20 20 20 20 20 20 y,n-1)) ).
01b0: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 6e 0a 20 }. }. in.
01c0: 20 20 20 20 20 70 6f 77 28 40 6d 61 63 72 6f 28 pow(@macro(
01d0: 78 2b 31 29 2c 31 30 29 0a 20 20 29 0a 7d 3b 0a x+1),10). ).};.
01e0: 0a 40 6d 61 63 72 6f 20 70 6f 77 31 30 48 61 72 .@macro pow10Har
01f0: 64 28 78 29 20 7b 0a 20 20 40 76 61 6c 75 65 28 d(x) {. @value(
0200: 0a 20 20 20 20 64 65 66 20 70 6f 77 28 78 2c 20 . def pow(x,
0210: 6e 29 20 7b 0a 20 20 20 20 20 20 69 66 28 20 6e n) {. if( n
0220: 20 3d 3d 20 31 20 29 20 7b 20 78 20 7d 0a 20 20 == 1 ) { x }.
0230: 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 else {.
0240: 20 20 20 40 6d 61 63 72 6f 28 20 40 76 61 6c 75 @macro( @valu
0250: 65 28 78 29 20 2a 20 40 76 61 6c 75 65 28 70 6f e(x) * @value(po
0260: 77 28 78 2c 6e 2d 31 29 29 20 29 0a 20 20 20 20 w(x,n-1)) ).
0270: 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 6e }. }. in
0280: 0a 20 20 20 20 20 20 70 6f 77 28 40 6d 61 63 72 . pow(@macr
0290: 6f 28 78 2b 31 29 2c 31 30 29 0a 20 20 29 0a 7d o(x+1),10). ).}
02a0: 3b 0a 0a 64 65 66 20 70 72 69 6e 74 41 6e 64 52 ;..def printAndR
02b0: 65 74 75 72 6e 28 78 29 0a 7b 0a 09 70 72 69 6e eturn(x).{..prin
02c0: 74 28 78 29 3b 0a 09 78 0a 7d 3b 0a 0a 64 65 66 t(x);..x.};..def
02d0: 20 6d 61 69 6e 28 29 0a 7b 0a 09 74 77 69 63 65 main().{..twice
02e0: 28 20 70 72 69 6e 74 28 22 66 6f 6f 22 29 20 29 ( print("foo") )
02f0: 3b 0a 09 70 72 69 6e 74 28 22 2d 2d 2d 2d 2d 2d ;..print("------
0300: 2d 2d 2d 2d 2d 2d 2d 2d 22 29 3b 0a 09 70 72 69 --------");..pri
0310: 6e 74 28 6d 61 78 28 70 72 69 6e 74 41 6e 64 52 nt(max(printAndR
0320: 65 74 75 72 6e 28 31 30 30 29 2c 70 72 69 6e 74 eturn(100),print
0330: 41 6e 64 52 65 74 75 72 6e 28 32 30 30 29 29 29 AndReturn(200)))
0340: 3b 0a 09 70 72 69 6e 74 28 22 2d 2d 2d 2d 2d 2d ;..print("------
0350: 2d 2d 2d 2d 2d 2d 2d 2d 22 29 3b 0a 09 70 72 69 --------");..pri
0360: 6e 74 28 6d 61 78 4e 6f 72 6d 61 6c 28 70 72 69 nt(maxNormal(pri
0370: 6e 74 41 6e 64 52 65 74 75 72 6e 28 31 30 30 29 ntAndReturn(100)
0380: 2c 70 72 69 6e 74 41 6e 64 52 65 74 75 72 6e 28 ,printAndReturn(
0390: 32 30 30 29 29 29 3b 0a 09 70 72 69 6e 74 28 22 200)));..print("
03a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 22 29 --------------")
03b0: 3b 0a 09 70 72 69 6e 74 28 6d 61 78 42 61 64 28 ;..print(maxBad(
03c0: 70 72 69 6e 74 41 6e 64 52 65 74 75 72 6e 28 31 printAndReturn(1
03d0: 30 30 29 2c 70 72 69 6e 74 41 6e 64 52 65 74 75 00),printAndRetu
03e0: 72 6e 28 32 30 30 29 29 29 3b 0a 09 70 72 69 6e rn(200)));..prin
03f0: 74 28 22 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d t("-------------
0400: 2d 22 29 3b 0a 09 70 72 69 6e 74 28 20 4c 65 74 -");..print( Let
0410: 49 74 42 65 28 20 31 2b 32 2b 33 2c 20 69 74 2a ItBe( 1+2+3, it*
0420: 69 74 20 29 20 29 3b 0a 09 70 72 69 6e 74 28 22 it ) );..print("
0430: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 22 29 --------------")
0440: 3b 0a 09 70 72 69 6e 74 28 70 6f 77 31 30 28 31 ;..print(pow10(1
0450: 29 29 3b 0a 09 70 72 69 6e 74 28 70 6f 77 31 30 ));..print(pow10
0460: 28 32 29 29 3b 0a 09 70 72 69 6e 74 28 22 2d 2d (2));..print("--
0470: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 22 29 3b 0a ------------");.
0480: 09 70 72 69 6e 74 28 70 6f 77 31 30 48 61 72 64 .print(pow10Hard
0490: 28 31 29 29 3b 0a 09 70 72 69 6e 74 28 70 6f 77 (1));..print(pow
04a0: 31 30 48 61 72 64 28 32 29 29 3b 0a 7d 3b 0a 0a 10Hard(2));.};..
04b0: 6d 61 69 6e 28 29 3b 0a 0a 40 6d 61 63 72 6f 20 main();..@macro
04c0: 66 6f 6f 28 79 29 0a 7b 0a 09 66 75 6e 28 79 29 foo(y).{..fun(y)
04d0: 7b 79 7d 28 33 30 30 29 0a 23 09 6c 65 74 20 79 {y}(300).#.let y
04e0: 20 3d 20 33 30 30 20 69 6e 20 79 0a 7d 3b 0a 0a = 300 in y.};..
04f0: 70 72 69 6e 74 28 22 2d 2d 2d 2d 2d 2d 2d 2d 2d print("---------
0500: 2d 2d 2d 2d 2d 22 29 3b 0a 70 72 69 6e 74 28 66 -----");.print(f
0510: 6f 6f 28 32 30 30 29 29 3b 0a oo(200));.