Michel Fortin wrote:
On 2010-02-25 14:11:02 -0500, Don <[email protected]> said:
Michel Fortin wrote:
To me, an attribute should be seen like this:
"""
If something is an attribute, then it's accessory to the language.
Something is accessory when you can remove it completely from a
program and expect the program to compile and behave the same.
Attributes are not changing anything beside adding some restrictions
to improve safety, optimization, etc.
"""
Please. *I* invented that rule.
I did not claim I invented it, just that this is what I think should be
an attribute. It's very possible I was influenced by your previous posts
into thinking this, but I'm not always tracking perfectly where each of
my opinions come from. Sorry if I overexplained everything to you.
The point is that it's been previously discussed, and it doesn't work.
I quite agree that having pure as @pure and nothrow as @nothrow would be
better than nothing.
If you want a rationale that works for everything beside pure and
nothrow, I think it'd work better to just say that new keywords added in
version 2 of D that behave as attributes(*) use the @attribute syntax.
You could say that. It's pretty much the same as the list from 'C-family
languages'. we don't care about backwards compatibility with keywords
from D1.
If pure and nothrow stay like this, just add a cutoff date to the above.
That isn't any better than an arbitrary list.
(*): http://www.digitalmars.com/d/2.0/attribute.html
I know you're trying to avoid this kind of "historical incident" kind of
rule, but making a rule that depends instead on the history of C-derived
languages doesn't really improve things in my opinion.
No, I'm trying to avoid a "prehistorical accident" type of rule.
For these purposes, the history of D begins when TDPL is published.
We're still in prehistory for a few more weeks.
Compatibility with C and C++ has always been critical for D; D contains
many historical accidents from C. But D has not yet set any historical
precedents.
If we simultaneously release a language with @attributes, together with
attributes that don't use them, it looks silly.