> > I think the poll might have been skewed due to context (forget my > newsgroup poll, that was worthy of an abortion, but I also didn't mean to > submit it :), I'm talking about Ary's) > > The question was asked, what do you think this code means. In the context > of D, where you know a symbol without parentheses can mean either a > function or a property/field, I'm certain there were several respondants > who didn't understand it was asking what they think is best, not *what D > currently does*. Ask that same questions to C++ developers and see what > you get... > > It's hard to phrase the question properly without bias to a group of > people who already know the current behavior. Maybe something like: > > Assume the D programming language required parentheses for normal > parameter-less functions, and required no parentheses for parameter-less > functions that returned a property. For example, the following code > should imply a getter for a filter inside x: > > auto tmp = x.filter; > > And the following code should imply performing a filtering action using x, > returning the result: > > auto tmp = x.filter(); > > Do you think it's worth adding such a capability, given that you will then > no longer be able to call ordinary parameter-less functions without > parentheses, an author of a property function must properly indicate that > the function is a property, and the compiler must trust the author for > this implication? >
IMP, the parenthesis thing is not about parameters vs function. I think the question is about whether the function can modify my object or not. e.g. if I call foo = object.x; I assume 'object' was not modified. But if x can be like a function, disguised as a parameter, I can modify my object without knowing. In C++, I'd say this behaviour is ok for 'const' functions. Now I haven't taken the time to study D constness, so I can't readily tell what is the direct equivalent, but I guess you understand what I mean. In short, IMO everything that can modify my object should require () to stress that this is an action with possible side effects, not merely a getter.
