Hex Artifact Content
Not logged in

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