Import concerns revisited

Sean Kelly sean at f4.ca
Sun Jul 9 12:18:47 PDT 2006


Dave wrote:
> John Reimer wrote:
>> In article <e8qjkf$2tqc$1 at digitaldaemon.com>, Walter Bright says...
>>> Ivan Senji wrote:
>>>> Sure I could use
>>>>
>>>> static import m2;
>>>> alias m2.func f2;
>>>>
>>>> And that would be an improvement but it is still longer (and arguably
>>>> less understandable) than:
>>>>
>>>> import m2.func as f2; ;) :)
>>> Let's say you're going to do more than one:
>>>
>>> static import m2;
>>> alias m2.func f2;
>>> alias m2.abcd f3;
>>> alias m2.efgh f4;
>>>
>>> vs:
>>>
>>> import m2.func as f2;
>>> import m2.abcd as f3;
>>> import m2.efgh as f4;
>>>
>>> Not much of a difference. I'm also not understanding why alias is 
>>> hard to understand.
>>
>> Well, your example is just showing selective renaming from /one/ module.
>> Naturally these two are going to be very similar.  Please look at Kris'
>> suggestion, thoroughly.  The whole system is vastly superior once one 
>> starts
>> referencing selective importing from multiple modules.  The total 
>> number of
>> lines are cut in half verses using static import and alias.
>>
>> Also, for selective import, I think using "from" instead of "with" 
>> looks much
>> better.
> 
> I agree that 'from' is better than 'with', but I just don't see the 
> advantage of
> 
> from m2 import func,abcd,efgh;
> 
> over the likes of
> 
> import m2.func, m2.abcd, m2.efgh as f4;
> import std.stdio, this.other.cool.db.lib as dblib;
> 
> because then you get the aliasing in there as well. True, there's a 
> little redundant typing of 'm2'.

If 'm2' is actually 'some.guys.super.cool.library.module' then the 
redundant typing adds up.

> Also,
> 
> from m2 private import func,abcd,efgh;
> 
> or
> 
> private from m2 import func,abcd,efgh;
> 
> sucks IMO.

I don't really mind the former, and I wouldn't terribly mind the latter 
if expressed differently:

private
{
     from m2 import func, abcd, efgh;
}

Though I think the real utility with the from/with syntax is that it 
would allow for selective public exposure of symbols to importing modules.


Sean



More information about the Digitalmars-d mailing list