Andrei Alexandrescu wrote:
Steven Schveighoffer wrote:
On Tue, 28 Jul 2009 11:11:09 -0400, Andrei Alexandrescu
<[email protected]> wrote:
Guess what - they both behave like functions. So their properties are
an elaborate mechanism that is actually thoroughly unchecked, thus
going back to what you could do by calling functions. So why the hell
did they define the feature in the first place? Oh, for allowing
people to write a.foo() instead of a.foo. You know what, that's a bit
disappointing for an entire language feature.
No, they did it to *force* you to write a.foo instead of a.foo(), to
make it more defined that foo is a field-like entity.
Which is not, because it can execute arbitrary code that is not
restricted in any way. How good a design is that? Back to semantics by
convention?
Back to semantics by convention?
Whenever you write *anything*, there's always semantic by convention.
writefln("Foo");
That writefln could just do antyhing with it's argument, maybe return it
twice. So how do you enforce writefln to actually write something?
Aaaah... D sucks because it can't enforce that.