DIP23 draft: Fixing properties redux

David Nadlinger see at klickverbot.at
Sun Feb 3 18:58:54 PST 2013


On Monday, 4 February 2013 at 02:28:39 UTC, deadalnix wrote:
> On Monday, 4 February 2013 at 02:18:08 UTC, David Nadlinger 
> wrote:
>> On Monday, 4 February 2013 at 01:30:49 UTC, Andrei 
>> Alexandrescu wrote:
>>> I think most, if not all, detailed rules derive from these.
>>
>> One does not, the strange special case for taking the address 
>> of a property.
>>
>> I'd REALLY urge you to explore alternative solutions, such as 
>> the one proposed by Andrej, before introducing an abomination 
>> like distinguishing between "&a" and "&(a)".
>>
>> There is no way such strange behavior could be explained in a 
>> way that is coherent with the rest of the language.
>>
>> I found that when you are working on a complex problem and 
>> have a solution that seems to work for everything except a 
>> little detail, the best approach often is to step back a bit 
>> and have an entirely fresh look at that area again, but now 
>> taking the rest of your design as a given.
>>
>
> The problem we are dealing with here isn't complex. It is made 
> complex artificially.
>
> We are trying to make @properties behave like fields, but hey 
> in this case I want it to behave like a function . . . oh yeah 
> so in this special case, I have to workaround, ho and here and 
> here as well, oh damn, that is complicated.
>
> Same goes when conflating the function with it's return value 
> (which optional () is about).

Not sure I'm following – you are arguing that the whole endeavor 
is futile as long as we keep parens-less function calls?

I actually think that DIP23 is a big step in the right direction, 
given that parens-less function calls are *very* unlikely to go 
away. Contrary to some of the previous proposals, it's actually a 
principled approach, like Adam and others (including me) have 
asked for. Now it's just a matter of getting the details right.

>> Introducing a rule by which parenthesizing an expression in a 
>> way that does not change precedence suddenly causes a 
>> difference in behavior certainly wouldn't be among the first 
>> ideas coming to my mind this way.
>>
>
> By trying to make things easy, we miss that the important point 
> is to make them simple.

My point is precisely that. I think there are much simpler 
solutions than adding some magic properties to a pair of 
parentheses in the right position, even if it might look like a 
convenient hack.

David


More information about the Digitalmars-d mailing list