Artifact 274d10aca22ce25f8b3e97da9c868e8c30bbd2bb:
0000: 40 6d 61 63 72 6f 20 74 77 69 63 65 28 78 29 20 @macro twice(x)
0010: 7b 20 78 3b 20 78 20 7d 3b 0a 40 6d 61 63 72 6f { x; x };.@macro
0020: 20 6d 61 78 28 78 2c 79 29 20 7b 0a 20 20 76 61 max(x,y) {. va
0030: 72 20 5f 78 20 3d 20 78 3b 20 23 20 6e 6f 20 68 r _x = x; # no h
0040: 79 67 65 6e 69 63 20 6d 61 63 72 6f 20 62 74 77 ygenic macro btw
0050: 2e 2e 2e 2e 0a 20 20 76 61 72 20 5f 79 20 3d 20 ..... var _y =
0060: 79 3b 20 23 20 6e 6f 20 68 79 67 65 6e 69 63 20 y; # no hygenic
0070: 6d 61 63 72 6f 20 62 74 77 2e 2e 2e 2e 0a 20 20 macro btw.....
0080: 69 66 28 5f 78 3c 5f 79 29 7b 5f 79 7d 65 6c 73 if(_x<_y){_y}els
0090: 65 7b 5f 78 7d 0a 7d 3b 0a 64 65 66 20 6d 61 78 e{_x}.};.def max
00a0: 4e 6f 72 6d 61 6c 28 78 2c 79 29 20 7b 0a 20 20 Normal(x,y) {.
00b0: 69 66 28 78 3c 79 29 7b 79 7d 65 6c 73 65 7b 78 if(x<y){y}else{x
00c0: 7d 0a 7d 3b 0a 40 6d 61 63 72 6f 20 6d 61 78 42 }.};.@macro maxB
00d0: 61 64 28 78 2c 79 29 20 7b 0a 20 20 69 66 28 78 ad(x,y) {. if(x
00e0: 3c 79 29 7b 79 7d 65 6c 73 65 7b 78 7d 0a 7d 3b <y){y}else{x}.};
00f0: 0a 0a 40 6d 61 63 72 6f 20 4c 65 74 49 74 42 65 ..@macro LetItBe
0100: 28 78 2c 20 79 29 20 7b 20 6c 65 74 20 69 74 20 (x, y) { let it
0110: 3d 20 78 20 69 6e 20 79 20 7d 3b 0a 0a 40 6d 61 = x in y };..@ma
0120: 63 72 6f 20 70 6f 77 31 30 28 78 29 20 7b 0a 20 cro pow10(x) {.
0130: 20 40 76 61 6c 75 65 28 0a 20 20 20 20 64 65 66 @value(. def
0140: 20 70 6f 77 28 78 2c 20 6e 29 20 7b 0a 20 20 20 pow(x, n) {.
0150: 20 20 20 69 66 28 20 6e 20 3d 3d 20 31 20 29 20 if( n == 1 )
0160: 7b 20 78 20 7d 0a 20 20 20 20 20 20 65 6c 73 65 { x }. else
0170: 20 7b 0a 20 20 20 20 20 20 20 20 40 6d 61 63 72 {. @macr
0180: 6f 28 20 40 76 61 6c 75 65 28 78 29 20 2a 20 40 o( @value(x) * @
0190: 76 61 6c 75 65 28 70 6f 77 28 78 2c 6e 2d 31 29 value(pow(x,n-1)
01a0: 29 20 29 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 ) ). }.
01b0: 7d 0a 20 20 20 20 69 6e 0a 20 20 20 20 20 20 70 }. in. p
01c0: 6f 77 28 40 6d 61 63 72 6f 28 78 29 2c 31 30 29 ow(@macro(x),10)
01d0: 0a 20 20 29 0a 7d 3b 0a 0a 64 65 66 20 70 72 69 . ).};..def pri
01e0: 6e 74 41 6e 64 52 65 74 75 72 6e 28 78 29 0a 7b ntAndReturn(x).{
01f0: 0a 09 70 72 69 6e 74 28 78 29 3b 0a 09 78 0a 7d ..print(x);..x.}
0200: 3b 0a 0a 0a 0a 0a 0a 64 65 66 20 6d 61 69 6e 28 ;......def main(
0210: 29 0a 7b 0a 09 74 77 69 63 65 28 20 70 72 69 6e ).{..twice( prin
0220: 74 28 22 66 6f 6f 22 29 20 29 3b 0a 09 70 72 69 t("foo") );..pri
0230: 6e 74 28 22 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d nt("------------
0240: 2d 2d 22 29 3b 0a 09 70 72 69 6e 74 28 6d 61 78 --");..print(max
0250: 28 70 72 69 6e 74 41 6e 64 52 65 74 75 72 6e 28 (printAndReturn(
0260: 31 30 30 29 2c 70 72 69 6e 74 41 6e 64 52 65 74 100),printAndRet
0270: 75 72 6e 28 32 30 30 29 29 29 3b 0a 09 70 72 69 urn(200)));..pri
0280: 6e 74 28 22 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d nt("------------
0290: 2d 2d 22 29 3b 0a 09 70 72 69 6e 74 28 6d 61 78 --");..print(max
02a0: 4e 6f 72 6d 61 6c 28 70 72 69 6e 74 41 6e 64 52 Normal(printAndR
02b0: 65 74 75 72 6e 28 31 30 30 29 2c 70 72 69 6e 74 eturn(100),print
02c0: 41 6e 64 52 65 74 75 72 6e 28 32 30 30 29 29 29 AndReturn(200)))
02d0: 3b 0a 09 70 72 69 6e 74 28 22 2d 2d 2d 2d 2d 2d ;..print("------
02e0: 2d 2d 2d 2d 2d 2d 2d 2d 22 29 3b 0a 09 70 72 69 --------");..pri
02f0: 6e 74 28 6d 61 78 42 61 64 28 70 72 69 6e 74 41 nt(maxBad(printA
0300: 6e 64 52 65 74 75 72 6e 28 31 30 30 29 2c 70 72 ndReturn(100),pr
0310: 69 6e 74 41 6e 64 52 65 74 75 72 6e 28 32 30 30 intAndReturn(200
0320: 29 29 29 3b 0a 09 70 72 69 6e 74 28 22 2d 2d 2d )));..print("---
0330: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 22 29 3b 0a 09 -----------");..
0340: 70 72 69 6e 74 28 20 4c 65 74 49 74 42 65 28 20 print( LetItBe(
0350: 31 2b 32 2b 33 2c 20 69 74 2a 69 74 20 29 20 29 1+2+3, it*it ) )
0360: 3b 0a 09 70 72 69 6e 74 28 22 2d 2d 2d 2d 2d 2d ;..print("------
0370: 2d 2d 2d 2d 2d 2d 2d 2d 22 29 3b 0a 09 70 72 69 --------");..pri
0380: 6e 74 28 70 6f 77 31 30 28 32 29 29 3b 0a 7d 3b nt(pow10(2));.};
0390: 0a 0a 6d 61 69 6e 28 29 0a ..main().