November 21

Sanırım bunu Whatsapp grubunda paylaşmıştım. Kaybetmeden buraya nakledeyim işinize yarar:

import std.stdio;

/// show parser ///
auto selfParse(char[] s) => s[9..$ - 2];
void show(string f = __FILE__,
          int line = __LINE__, T)(T t) {
	import std.range : drop, front;
    File(f).byLine
           .drop(line - 1)
           .front
           .selfParse
           .writeln(": ", t);
}
/// show parser ///

template f(size_t n) if(n<22)
{
  static if(n < 2) const f = 1;
  else const f = n * f!(n - 1);
}

void main()
{
    int i = 3;

    show(i++ + ++i * i);
    show(i = 3);
    show(i);

    T factorial(T)(T n)=>n<2?1:n*factorial(--n);
    show(factorial(10));
    show(f!21);
}
/* ÇIKTISI:
i++ + ++i * i: 28
i = 3: 3
i: 3
factorial(10): 3628800
f!21: 14197454024290336768
//*/

Konu şurada ortaya çıktı ve çözümü getiren taktir edilmiştir:
https://forum.dlang.org/post/qytuxipgkxulnutvddwx@forum.dlang.org

SDB@79