Why I'm Excited about D
Dominikus Dittes Scherkl via Digitalmars-d
digitalmars-d at puremagic.com
Mon Apr 13 03:32:06 PDT 2015
On Monday, 13 April 2015 at 05:46:32 UTC, Dicebot wrote:
> [...]
> That said, I think the main reason why this notion didn't work
> well for D when @property was introduces is because of
> extremely vague range semantics. I find it important that you
> have mentioned exactly `front` and `popFront` as examples for
> unclear parens placement - problem with those is that there
> isn't. `front` may or may not be trivial getter depending on
> (sometimes arbitrary) decision by range implementor, there is
> no uniformity between those. Which makes impossible to enforce
> consistent calling style and makes "drop everything" approach
> much more tempting.
At work we use a tool that uses a kind of attribute "no side
effects".
I would love it if the D could do just that - the compiler is
already able to check if a function has side effects or not (if
it has none it can warns about simple function call statements),
than only functions with no side effects should be callable
without parantheses. That would be straight and a clear visible
for the reader of some code.
And than the attribute @property could be used to allow even a
function WITH side effects to be called without parantheses - the
developer has to ensure that what ever is done in such a function
does something sensible (e.g. calculate something at first call
and then only works as getter afterwards), but the reader of the
code is warned: the attribute @proberty was used, so he better
take a look what this function really does.
Maybe also a new attribute @nonprop could be introduced, to force
that a function must be called with parantheses even if it has no
side effects, but I'm not sure where this would be useful.
More information about the Digitalmars-d
mailing list