On Saturday, February 09, 2013 06:15:34 Kenji Hara wrote: > To avoid syntactic ambiguity, it's forbidden to define property > getter callable by using UFCS.
And why is it that the global function gets to be a setter property and the UFCS function doesn't? What's the advantage in choosing the UFCS function as the one that has to be a normal function which just happens to be called without parens (but could be called with them) over choosing the global getter property to be the one that's a function that can be called without parens? I'd much rather see the global getter have to be declared without @property (and rely an the ability to be called without parens but be unable to enforce it). And I _definitely_ wouldn't want to set a precedence for front to be declared as a non-property function. It needs to be consistently called without parens to work in generic code, and if arrays are able to use front with parens, then we definitely risk a lot of range-based functions being written incorrectly due to the fact that far too often, range-based functions only end up being tested with arrays, and in that case, the parens wouldn't cause an error like they should. It wouldn't be caught until someone actually tried it with another type of range (possibly much later). Granted, the writer of the range-based function should have tested it better, but given that arrays are by far the most common type of range, I think that it's just asking for trouble to allow their front or back to be used with parens. - Jonathan M Davis