Import concerns revisited
John Reimer
terminal.node at gmail.com
Tue Jul 11 02:30:57 PDT 2006
Actually, I just want to make a correction. The problem you describe, Don,
is very much related to this whole issue (after I did some reading up on the
name collision thing to understand it more), but I still don't consider the
"static import" a proper fix.
-JJR
"Don Clugston" <dac at nospam.com.au> wrote in message
news:e8vn6d$1bm0$1 at digitaldaemon.com...
> John Reimer wrote:
>>
>> "Walter Bright" <newshound at digitalmars.com> wrote in message
>> news:e8utvp$53$1 at digitaldaemon.com...
>>> John Reimer wrote:
>>>> If you can find something
>>>> equivalent to from/as (which you most certainly haven't), without
>>>> adopting new
>>>> syntax, maybe we'll bite... but so far, I think using 'with' (or from)
>>>> and 'as'
>>>> is an excellent contender.
>>>
>>> I'll repeat myself here, too <g>. The 'static import' combined with
>>> 'alias' has
>>>
>>> *exactly the same semantics*
>>>
>>> as 'with' 'as'. The only difference between the proposals is if there
>>> are two statements or one. There is no difference in power or effect.
>>> There is nothing that one can do that the other cannot.
>>>
>>
>>
>> The semantics are not exactly the same. Read Sean and Kris's
>> explanations again, please. 'static import' adds nothing to the what
>> this whole namespace business. It just sharpens the compiler a bit to
>> enforce FQN for the programmer's sake. But that is absolutely
>> unnecessary because a D programmer that wants to do that now can just
>> make sure he uses FQNs! So what's the point of 'static import'?
>
> I have to disagree with this. Currently, suppose you have a module that
> uses the toString() functions from std.string (and uses them hundreds of
> times). Then, you decide you need to use std.date in one place to get the
> current time. Suddenly, your module won't compile, because
> std.date.toString() conflicts with all the other toString()s that you're
> using. Even though you're not even using std.date.toString !
>
> With the static import proposal, you could just have
>
> import std.string;
> static import std.date;
>
> and then use FQNs for the single usage of date.
>
> This is not a contrived example, I encountered it in my second D program
> (and I immediately thought that there were serious problems with the D
> module system. You're telling me I have to alias std.string.toString just
> because I want to use std.date.getUTCtime() ???). 'static import' would
> make it possible to avoid the use of FQNs in most cases; it would enable
> you to distinguish 'I'm going to use a function from this module' (static
> import) from 'I'm heavily depending on this module' (normal import).
>
> Which is not to say that I'm favouring 'static import' in this discussion,
> I'm simply saying that all of the proposals, including static import, are
> an *enormous* improvement over what we have now.
More information about the Digitalmars-d
mailing list