Revised RFC on range design for D2
Bruno Medeiros
brunodomedeiros+spam at com.gmail
Thu Oct 2 08:37:41 PDT 2008
Andrei Alexandrescu wrote:
> Bruno Medeiros wrote:
>> Andrei Alexandrescu wrote:
>>> Bill Baxter wrote:
>>>> On Tue, Sep 30, 2008 at 4:08 AM, KennyTM~ <kennytm at gmail.com> wrote:
>>>>> I think the distinction of with and without () is pretty stylistic,
>>>>> because
>>>>> the same argument can even be applied to operator overloading (does
>>>>> a=b
>>>>> means pointing the variable a to b, or calling a.opAssign(b)?)
>>>>>
>>>>> For me, I would use () if the function do modify the object itself.
>>>>
>>>> I think the counter-argument to what I just said is that if properties
>>>> had to be declared explicitly then at least we would know that .y is
>>>> either a field or else something the designer *intended* to behave
>>>> like a property. Which does tell us something. It most likely means
>>>> that it's not an extremely heavy-weight operation, just a lightweight
>>>> accessor with maybe a little logic on top. That could be wrong, but
>>>> in that case it's the class designer's fault for misleading us.
>>>
>>> So the logic is:
>>>
>>> "A field can be accessed with a.b, but not with a.b(). Therefore if
>>> someone writes a.b, it may be a field or code, but it someone writes
>>> a.b() it will always be code. Given that a field is cheap and code
>>> ranges from cheap to expensive, good style is to have a.b always
>>> refer to cheap stuff, and a.b() always refer to
>>> not-expected-to-be-cheap stuff."
>>>
>>> I agree with that logic. It makes for a nice convention. (That
>>> convention is already broken by the built-in dup and sort, but let
>>> past mistakes be past mistakes.) My response to that is that concerns
>>> of keeping the language simple and of facilitating generic code are
>>> counterarguments that should be weighed in as well.
>>>
>>
>> In what way does that convention/style go against facilitating generic
>> code?
>
> A generic function writing obj.symbol cannot work across objects that
> implement symbol as a computed property vs. a field.
>
>
> Andrei
I'm not following. If 'obj.symbol' is syntactically available and is
valid code, shouldn't the generic function work ok regardless of whether
'symbol' is a computed property or a field?
I mean, what is even the difference from the status quo?
--
Bruno Medeiros - Software Developer, MSc. in CS/E graduate
http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D
More information about the Digitalmars-d-announce
mailing list