Hex Artifact Content
Not logged in

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().