mixin identifiers concept

bauss jj_1337 at live.dk
Mon Jan 31 07:19:49 UTC 2022


On Saturday, 29 January 2022 at 21:24:09 UTC, mesni wrote:
> ```d
> static foreach(name; ["boo", "foo"]){
>     string file_#name = readText(name~".txt");
>     string file_#name#_info = readText(name~".meta");
>     auto ##name = file_#name#_info.parseInfoFile;
> }
>
> writeln(file_boo);
> writeln(boo);
> writeln(file_foo_info);
> ```
> To make it easier to read/write code in D, I would introduce 
> new mixins. These mixins can only represent identifiers. Also, 
> the advantage of such mixins, the parser and semantic analysis 
> will be able to detect some errors before the code is 
> completely "opened". Also, I think they can speed up 
> compilation.

I believe a DIP would be necessary, but to be honest I don't see 
a reason for this.

You can just do this which isn't really much less readable.

```d
     static foreach (name; ["boo", "foo"])
     {
         mixin(`string file_%1$s = 
readText("%1$s.txt");`.format(name));
     }

     writeln(file_boo);
     writeln(file_foo);
```

And if D ever gets interpolated strings then the whole format can 
be removed and it could probably become something like this:

```d
     static foreach (name; ["boo", "foo"])
     {
         mixin(i`string file_$name = readText("$name.txt");`);
     }

     writeln(file_boo);
     writeln(file_foo);
```

So personally I don't see a reason for your suggestion to be 
added.

I think it's just going to introduce more complexity than it's 
worth.


More information about the Digitalmars-d mailing list