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?

Reply via email to