April 30, 2022

On Friday, 29 April 2022 at 16:10:52 UTC, Salih Dincer wrote:

>

On Friday, 29 April 2022 at 12:57:15 UTC, Steven Schveighoffer wrote:

>

[...]

I see, think it can be done with mixin:

template prn(alias args)
{
  string prn()
  {
    string result = "write(";
    foreach(s; args.split("|"))
    {
      result ~= format("%s,", s);
    }
    return result ~ ");";
  }
}

void main()
{
  int data = 456;
  char enter = '\n';

  mixin(prn!q{
    enter| 123 | " str " |  data |

    enter|    __TIME__   | enter }
  );

  mixin(
    prn!q{"This value of " |41| " is prime."}
  );
}

If there was some convenience on the compiler side, we could integrate it into D.

SDB@79

There's already an implementation of mixin string interpolation in https://github.com/Abscissa/scriptlike

April 30, 2022

On Saturday, 30 April 2022 at 02:22:22 UTC, Tejas wrote:

>

On Friday, 29 April 2022 at 16:10:52 UTC, Salih Dincer wrote:

>

On Friday, 29 April 2022 at 12:57:15 UTC, Steven Schveighoffer wrote:

>

[...]

I see, think it can be done with mixin:

template prn(alias args)
{
  string prn()
  {
    string result = "write(";
    foreach(s; args.split("|"))
    {
      result ~= format("%s,", s);
    }
    return result ~ ");";
  }
}

void main()
{
  int data = 456;
  char enter = '\n';

  mixin(prn!q{
    enter| 123 | " str " |  data |

    enter|    __TIME__   | enter }
  );

  mixin(
    prn!q{"This value of " |41| " is prime."}
  );
}

If there was some convenience on the compiler side, we could integrate it into D.

SDB@79

There's already an implementation of mixin string interpolation in https://github.com/Abscissa/scriptlike

I took a quick look and didn't like it! Maybe it would be more useful to use it in a comprehensive project.

I like simple things more. In D, I would like to be able to write:

printq("Value: " stack.pop ", address 0x" stack.length + stack.ptr);

But due to a habit from C, I say like this:

writef("Value: %s, address 0x%s", stack.pop, stack.length + stack.ptr);

Longer, yes, but I respect it. There are many people like me who love the old. But I also love the new conveniences:

with(new Stack!IDs)
{
  while(!empty)
  {
    "Value".write(": ", pop);
    ", ".writefln!"%saddress 0x%x"
    (length + ptr);
  }
}

I like these too! But it's not enough! It's not enough, you know? I'm a human! I don't know what postfix is! I have to keep up with the computer not it me.
The computer has to keep up with me, not me! Because I created it.

Ve's-selam, SDB@79

1 2
Next ›   Last »