Function calls

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Fri Jan 29 12:02:13 PST 2010


Steven Schveighoffer wrote:
> On Fri, 29 Jan 2010 13:43:50 -0500, Pelle Månsson 
> <pelle.mansson at gmail.com> wrote:
> 
>> On 01/29/2010 07:10 PM, Steven Schveighoffer wrote:
>>> Note in the anecdote above, both users would have
>>> been satisfied if you could *only* call empty without parentheses.
>>>
>>
>> That's a good point. The writeln = 3; is also a good point. :)
>>
>> What I'm trying to defend is the ability to call non-property 
>> functions without the parens.
>>
>> I find this:
>>
>> array.stable_sort;
>> file.detach;
>> range.popFront;
>>
>> to look less noisy, clearer and just plain sexier than the respective 
>> versions with the parens.
> 
> You've cited three functions where the function names cannot be 
> misinterpreted as properties.  This is not the case for all function 
> names.  If you wish to have a way to specify a function can be called 
> either way, then I think you also need a way to specify that a function 
> can only be called with parentheses.
> 
> I don't disagree that the above is unambiguous, but there are examples 
> where it is ambiguous.
> 
> f.read;
> 
> does this mean read f, or is it an accidental noop fetching a property 
> indicating f is read?

"Rules are not meant to be followed robotically."

Sorry I couldn't abstain :o).

> Requiring parentheses also allows you to force meanings where they would 
> otherwise be interpreted as properties:
> 
> f.next();
> 
> Looks like it advances f, even though next isn't a verb.  Without the 
> parentheses, it looks like a noop access of a property.
> 
> I'm not too concerned with requiring () on your examples because it's 
> inconsequential to me -- having parentheses isn't *less* clear than not 
> having them.  I don't mind if you wish to allow these calls without 
> parens, but there has to still be a way to force the parens.
> 
> -Steve

Ok how about this: if just calling the thing changes the parent, it 
can't be a property. Guess I could live with that.


Andrei



More information about the Digitalmars-d mailing list