FAQ for newbies who see pure @safe nothrow @nogc
matovitch via Digitalmars-d
digitalmars-d at puremagic.com
Thu Jan 29 08:02:43 PST 2015
On Thursday, 29 January 2015 at 15:54:54 UTC, Jonathan Marler
wrote:
> On Thursday, 29 January 2015 at 15:39:18 UTC, matovitch wrote:
>> Yes, if @ttributes are better because you can create
>> identifier with the same name why aren't they used everywhere
>> ? By the way, the denomination makes sense too : function
>> attibutes are either built-in or user defined attributes. But
>> const can be a qualifier or a function/method attribute that
>> is two very different things...maybe not beeing able to use
>> const as a function attribute but @const would make more sense
>> ?
>
> The purpose of this thread wasn't to re-discuss what was
> already discussed. The answer to your idea can be found in the
> other thread
> http://forum.dlang.org/post/rtwbtxigfeupvykpbamh@forum.dlang.org.
> It's gonna be a long read so I'll summarize what I believe is
> the correct answer.
>
> The problem we are trying to solve is that the function
> attributes are inconsistent. Some use @ like "@safe" and
> "@nogc" and some don't like "pure" and "nothrow".
>
> So one idea is to require an '@' symbol in front of all of them
> for the sake of consistency. The problem with this idea is
> that you've now introduced inconsistency somewhere else. Every
> keyword that you put an '@' symbol in front of, will be used
> somewhere else without an '@' symbol. Like this:
>
> abstract class MyClass { }
> @abstract void myfunc();
>
> See the inconsistency? You're gonna end up with alot of these
> types of inconsistencies. In addition, you've made the rule of
> when to use the '@' symbol more complex. Before it was, "Use
> '@' if it is not a keyword". Now it's, "Use '@' if it is not a
> keyword except when it's a function attribute". This
> definition will likely be made worse since people will want to
> solve the newly introduced inconsistencies. So the new
> definition will become, "Use '@' if it is a keyword except if
> it's a function attribute or a class specifier". By the time
> you solve every inconsistency you'll have made every usage of
> every keyword use the '@' symbol. Then the rule will be
> "Always use the '@' symbol".
>
> This will definitely be included on the FAQ :) I'll reword it
> and modify it but I agree that people will want an explanation
> for this.
One can argue that it's hard to remember what is a keyword
(especially in D where there are many) and easier to distinguish
beetween qualifiers and attributes. But I understand legacy code
is an issue and I agree that the FAQ should just state the facts.
More information about the Digitalmars-d
mailing list