On 1/5/14 5:22 PM, Martin Nowak wrote:
On 12/20/2013 09:43 PM, Martin Nowak wrote:

Couldn't static imports be made lazy without breaking any code?
The above example would read.

static import std.range.

void foo(R)(R range) if (std.range.isForwardRange!R)
{
}

Furthermore selective import can always be made lazily without changing
code.

import std.algorithm : min;

Only if `min` or `std.algorithm` are used the compiler needs to open
std.algorithm.

I thought more about this and I think that's wrong. Making all imports lazy would be a net large win.

The missing link is transitivity: if one imports only min from std.algorithm, std.algorithm itself indeed needs to be opened and parsed, but ONLY transitive imports of std.algorithm that min itself needs would be opened.

We can do lazy importing with no change to the language semantics.


Andrei

Reply via email to