DIP6: Attributes
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Tue Aug 4 10:20:17 PDT 2009
Steven Schveighoffer wrote:
> On Tue, 04 Aug 2009 12:23:41 -0400, Andrei Alexandrescu
> <SeeWebsiteForEmail at erdani.org> wrote:
>
>> Steven Schveighoffer wrote:
>>> On Tue, 04 Aug 2009 09:45:51 -0400, grauzone <none at example.net> wrote:
>>>
>>>> Steven Schveighoffer wrote:
>>>>> don't think it's worth adding them until we can have full
>>>>> reflection capabilities so we can get at elements of code and
>>>>> therefore get the annotations associated with it. I see much more
>>>>> usefulness for annotations as reflection hints than as a
>>>>> replacement for keywords.
>>>>
>>>> But we already have full reflection. It's called __traits. You can
>>>> build a serialization library or "proper" (user friendly?)
>>>> reflection on top of it.
>>> I think you are the 1 millionth person to say it, and yet we still
>>> do not have a "user friendly" reflection system. Why is that? You'd
>>> think that if it could be done, somebody would have done it by now.
>>
>> The reality is there's quite few of us. D is not in the stage where if
>> something could be done, somebody somewhere has done it or is working
>> on it.
>>
>
> That's understandable, nobody can expect a language as young as D to
> have everything.
>
> But in reality, I think the *theory* that everything is there to build a
> reflection system is only proven when it actually happens. I'm sure
> when the enterprising person or persons go to develop it, they will find
> pieces missing from the static reflection system.
Exactly. I'm absolutely sure there are quite a few things needed here
and there. I can assure you I'll push hard for those.
> So my point is that adding annotations before reflection works and is
> implemented makes little sense to me, because the usage of them will be
> crippled by the fact that reflection isn't complete.
>
> What I'd like to see is something like this possible:
>
> void foo (int timeout, string bar, float f = 4.0);
>
> void foo(int timeout);
>
> call!(foo)("timeout=5,bar=\"hello\"");
>
> Taking into account the default value of f, what the parameters are
> named, and which overload to call. I could certainly do it with C#.
This is interesting. It means we'd need reflection for parameter names,
which currently does not exist.
Andrei
More information about the Digitalmars-d
mailing list