On Tuesday, 15 August 2017 at 20:33:18 UTC, Johnson wrote:

Or instead of a new language feature, the gtk-d guys could have package files ;)

But then that only helps with one specific instance. D is full of language features, I do not see why everyone is so against them. Without them, D would be empty, nothing, and no one would use it. Adding language features should be see as something good, cause without them, we wouldn't get anywhere.

In the past, I've thought it would be convenient to have something like

import io = std.stdio : writeln, write;

and allow someone to write

io.write("foo");
io.writeln("bar");

though I don't know if that causes any kinds of problems to implement.

That being said, the code you refer to above probably could be simplified quite a bit with mixins. I just did a simple version, but I imagine it could be extended. It also might be even easier to accomplish when static foreach is in the language, that would you can just loop through the LowLevels to accomplish it. Some kind of hierarchy to the HighLevels/MidLevels/LowLevels would also need to be established.

import std.meta : AliasSeq;

alias LowLevels = AliasSeq!("writeln", "write");

template GenImport(string TopLevel, string MidLevel, string LowLevel)
{
    const char[] GenImport = "import " ~ TopLevel ~ "." ~ MidLevel
~ " : " ~ LowLevel ~ ";";
}

mixin(GenImport!("std", "stdio", LowLevels[0]));
mixin(GenImport!("std", "stdio", LowLevels[1]));

void main()
{
    write("foo");
    writeln("bar");
}

Reply via email to