Hex Artifact Content
Not logged in

Artifact 827dbc8186458d4396ced2d110812913d035d58f:


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 0a 20 20 6c 65 74 20 69  (x, y) {.  let i
0110: 74 20 3d 20 78 20 69 6e 20 79 0a 7d 3b 0a 0a 40  t = x in y.};..@
0120: 6d 61 63 72 6f 20 70 6f 77 31 30 28 78 29 20 7b  macro pow10(x) {
0130: 0a 20 20 40 76 28 0a 20 20 20 20 64 65 66 20 70  .  @v(.    def p
0140: 6f 77 28 78 2c 20 6e 29 20 7b 0a 20 20 20 20 20  ow(x, n) {.     
0150: 20 69 66 28 20 6e 20 3d 3d 20 31 20 29 20 7b 20   if( n == 1 ) { 
0160: 78 20 7d 0a 20 20 20 20 20 20 65 6c 73 65 20 7b  x }.      else {
0170: 0a 20 20 20 20 20 20 20 20 40 6d 61 63 72 6f 28  .        @macro(
0180: 20 40 76 28 78 29 20 2a 20 40 76 28 70 6f 77 28   @v(x) * @v(pow(
0190: 78 2c 6e 2d 31 29 29 20 29 0a 20 20 20 20 20 20  x,n-1)) ).      
01a0: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 6e 0a 20  }.    }.    in. 
01b0: 20 20 20 20 20 70 6f 77 28 40 6d 61 63 72 6f 28       pow(@macro(
01c0: 78 29 2c 31 30 29 0a 20 20 29 0a 7d 3b 0a 0a 64  x),10).  ).};..d
01d0: 65 66 20 70 72 69 6e 74 41 6e 64 52 65 74 75 72  ef printAndRetur
01e0: 6e 28 78 29 0a 7b 0a 09 70 72 69 6e 74 28 78 29  n(x).{..print(x)
01f0: 3b 0a 09 78 0a 7d 3b 0a 0a 0a 0a 0a 0a 64 65 66  ;..x.};......def
0200: 20 6d 61 69 6e 28 29 0a 7b 0a 09 74 77 69 63 65   main().{..twice
0210: 28 20 70 72 69 6e 74 28 22 66 6f 6f 22 29 20 29  ( print("foo") )
0220: 3b 0a 09 70 72 69 6e 74 28 22 2d 2d 2d 2d 2d 2d  ;..print("------
0230: 2d 2d 2d 2d 2d 2d 2d 2d 22 29 3b 0a 09 70 72 69  --------");..pri
0240: 6e 74 28 6d 61 78 28 70 72 69 6e 74 41 6e 64 52  nt(max(printAndR
0250: 65 74 75 72 6e 28 31 30 30 29 2c 70 72 69 6e 74  eturn(100),print
0260: 41 6e 64 52 65 74 75 72 6e 28 32 30 30 29 29 29  AndReturn(200)))
0270: 3b 0a 09 70 72 69 6e 74 28 22 2d 2d 2d 2d 2d 2d  ;..print("------
0280: 2d 2d 2d 2d 2d 2d 2d 2d 22 29 3b 0a 09 70 72 69  --------");..pri
0290: 6e 74 28 6d 61 78 4e 6f 72 6d 61 6c 28 70 72 69  nt(maxNormal(pri
02a0: 6e 74 41 6e 64 52 65 74 75 72 6e 28 31 30 30 29  ntAndReturn(100)
02b0: 2c 70 72 69 6e 74 41 6e 64 52 65 74 75 72 6e 28  ,printAndReturn(
02c0: 32 30 30 29 29 29 3b 0a 09 70 72 69 6e 74 28 22  200)));..print("
02d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 22 29  --------------")
02e0: 3b 0a 09 70 72 69 6e 74 28 6d 61 78 42 61 64 28  ;..print(maxBad(
02f0: 70 72 69 6e 74 41 6e 64 52 65 74 75 72 6e 28 31  printAndReturn(1
0300: 30 30 29 2c 70 72 69 6e 74 41 6e 64 52 65 74 75  00),printAndRetu
0310: 72 6e 28 32 30 30 29 29 29 3b 0a 09 70 72 69 6e  rn(200)));..prin
0320: 74 28 22 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  t("-------------
0330: 2d 22 29 3b 0a 09 70 72 69 6e 74 28 20 4c 65 74  -");..print( Let
0340: 49 74 42 65 28 20 31 2b 32 2b 33 2c 20 69 74 2a  ItBe( 1+2+3, it*
0350: 69 74 20 29 20 29 3b 0a 09 70 72 69 6e 74 28 22  it ) );..print("
0360: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 22 29  --------------")
0370: 3b 0a 09 70 72 69 6e 74 28 70 6f 77 31 30 28 32  ;..print(pow10(2
0380: 29 29 3b 0a 09 0a 7d 3b 0a 0a 6d 61 69 6e 28 29  ));...};..main()
0390: 0a                                               .