On Saturday, 21 June 2014 at 19:41:42 UTC, Jonathan M Davis via
Digitalmars-d wrote:
And to add to that, this proposal doesn't even make things
consistent. You
_still_ have to explain why some attributes have @ and some
don't. It's just
that now two of them have @ whereas they didn't before. final,
static, public,
const, etc. all still don't have @, and they're all function
attributes too.
I think the proposal said that the type constructors would be
exempt, You wouldn't have @const but you would have @final.
So, it doesn't increase consistency. It just moves it around.
And then we have
to explain why some older code or tutorials _don't_ have @ on
pure or nothrow,
making it so that we have _more_ to explain.
We can either say "It used to be inconsistent, but then we did
nothing", or "It used to be inconsistent, but then we fixed it.
Run this tool on your code and you'll be fine."
I appreciate the sentiment of wanting to clean things up and
make them more
consistent, but I really don't think this does that. If we want
that, we'd
either have to add @ to all attributes or remove it from all
attributes. But
then of course, we'd have stuff like @public and @static, which
is
inconsistent with other languages and would probably cause
folks to complain
about unnecessary inconsistencies with othe languages. So, I
really don't
think that we can avoid this problem. It's just a question of
which form of it
we want to deal with and how much code breakage we're willing
to put up with
to get it there.
Why is D being consistent with other languages a more important
goal than D being consistent with D?