OK. I'm going to try to shift the object of this discussion. Let's forget style for a little (I loves me both the functional notation, but am also a syntax Nazi).

Clearly, not everyone agrees with what constitutes a property, and what doesn't. Because of this, there is a strong urge to make parenthesis *on functions* optional (especially when UFCS gets mixed in).

In this context, what does it mean then to have something be "a property" ?

I think we should remember what "@property" (as I understood it) is meant for: a function that can emulate being a object. The de-facto example being "front".

The "final" objective (as I understood it), is that you can publish your interface, and later, swap object/members for functions (and vice versa).

When you think about it: The (no) parentheses is really just a side effect of being a property, but not the root objective. As for enforcing parenthesis on non-property: Well, that has nothing to do with @property, when you think of it

--------
IMO: We should be able to keep the optional parenthesis for all functions (except maybe those that return delegates). Things that are marked as property, however, MUST respect two things:
1) properties should *NEVER* have parentheses.
2) you should not be able to take the address of a property function. 3) The "a.prop = value" should call "a.prop(value)" IFF prop is declared property.

This (I think), should make everyone happy. Callers can still choose their own styles, especially in the context of UFCS.

As for @property: this makes it able to guarantee what it was originally designed for.

...

Or am I completely wrong? Did I miss anything?

Reply via email to