<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2013/1/25 kenji hara <span dir="ltr"><<a href="mailto:k.hara.pg@gmail.com" target="_blank">k.hara.pg@gmail.com</a>></span><blockquote class="gmail_quote" style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>I have thought an additional idea.</div>
<div>If we really want a feature to disable optional parentheses for normal functions, we can add @function attribute to the language spec.</div><div><br></div><div>int foo();</div><div>@property int bar();</div><div>@function int baz();  // new!</div>

<div><br></div><div>int x1 = foo();  // ok</div><div>int x2 = foo;  // optional parentheses, allowed</div><div>int y1 = bar();  // disallowed, calling int is meaningless<br></div><div>int y2 = bar;  // ok</div><div>int z1 = baz();  // ok</div>

<div>int z2 = baz;  // *disallowed* by @function attribute</div></div></div></div></blockquote><div><br></div><div>I think calling a function which does not annotated with @attribute without parenthesis is legal, Even if a function has some side-effects and a name looks like verb. Because native English grammar does not require parentheses.</div>
<div><br></div><div>He runs().  // normal function call<br></div><div><div>He runs.    // optional parentheses<br></div><br class=""></div><div>Kenji Hara</div></div></div></div>