DIP6: Attributes

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Aug 4 12:11:02 PDT 2009


Ary Borenszweig wrote:
> Andrei Alexandrescu wrote:
>> 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.
> 
> Why do it with strings? Why not
> 
> call!(foo)(5, "hello")
> 
> with varaidic args?

Well some don't like to need to remember the order of arguments.

Andrei



More information about the Digitalmars-d mailing list