On Fri, Jul 24, 2009 at 12:21 PM, Steven Schveighoffer<schvei...@yahoo.com> wrote: > On Fri, 24 Jul 2009 15:12:10 -0400, Ary Borenszweig <a...@esperanto.org.ar> > wrote: > >> Maybe what scares Walter is a whole new syntax for properties. If at least >> you could say which functions are properties and which are not, that would >> be a small change and it'll make it possible for other things. Something >> like: > > His point is that there are no benefits to the semantic meaning of the code > by declaring something a property. It's still a function, still gets > implemented by a function. > > It's like if you say functions can now be called like this: > > foo^arg > > But he's not getting that the compiler isn't the only one reading the code, > and D isn't the only language being used. You are also using a person's > knowledge of math (x = y) and a person's native language. At least the > native language, the compiler knows and cares nothing about, but the > developer and user care greatly (and want the conventions enforced).
Another example: arrays are just functions too. So there's no real need for a distinct a[i] syntax. a(i) would work just fine (and is exactly what's used in Fortran and Matlab for array indexing). But we kind of like being able to see right away that something is intended to be indexing. It give the reader of the code a hint about the intended semantics. But of course the compiler can't enforce that every opIndex overload conforms to that. You could write an opIndex overload that prints to stdout. But generally people don't do that because that would be sending the wrong signal. Generally the opIndex overloads offer index-ing like behavior. --bb