On 01/25/2013 01:12 AM, Andrei Alexandrescu wrote:
On 1/24/13 6:52 PM, Adam Wilson wrote:
On Thu, 24 Jan 2013 00:34:42 -0800, Walter Bright
<[email protected]> wrote:
This has turned into a monster. We've taken 2 or 3 wrong turns
somewhere.
Perhaps we should revert to a simple set of rules.
1. Empty parens are optional. If there is an ambiguity with the return
value taking (), the () go on the return value.
2. the:
f = g
rewrite to:
f(g)
only happens if f is a function that only has overloads for () and
(one argument). No variadics.
3. Parens are required for calling delegates or function pointers.
4. No more @property.
I just worked through this with Alexander Bothe (of Mono-D fame). Here
is what C# does.
public Action temp { get; set; }
public Action Event { get { return temp; } }
t.Event; //returns the delegate
t.Event(); //calls the delegate.
Simple, clean, clear, concise. No problems with optional parens.
(Action is a delegate in C#)
This looks essentially the same as Walter's proposal.
Andrei
Not at all. Walter's proposal just chooses the other option when stuff
is "ambiguous" and adds a hideous special rule in case the empty
argument list was obtained from an empty sequence.