The Wrong Stuff
Simen kjaeraas
simen.kjaras at gmail.com
Sun Sep 26 13:20:52 PDT 2010
lurker <lurk at lurking.net> wrote:
>> Why am I using this language?
>
> There is absolutely no need to use D. In fact some (most?) of us wish
> that you wouldn't.
>
> This answer isn't for you because you implicitly seem to disagree with
> everything, but here it goes: Designing new keywords is a complicated
> task. Walter follows a so called parser oriented thinking - what's easy
> to implement in the parser (the low hanging fruit), seems to be the best
> solution. If you need other kind of changes to the language, you need to
> carefully take into consideration (Herb Sutter like C++ thinking) all
> kinds of aspects such as legacy concerns (C compatibility), namespace
> issues (__keywords and @keywords nicely create new namespaces and don't
> conflict with user symbols like variables). I can't even possibly
> imagine why would anyone (except you) want to use their own keywords. It
> sounds like a new treacherous way to invite dangerous macros to the
> language.
Well, the @tribute syntax has been touted as an extensible property
system, where users may possibly throw their own into the mix, and
create systems for checking their validity.
> The reservation of the word macro without giving an implementation is a
> conscious decision to disable all kinds of over-expressive macros in
> forthcoming versions of the language.
What? The macro keyword has been reserved because future version of D
are likely to have an AST macro system, and it would be unfortunate if
everyone was already using that symbol in their code.
> Providing customized @keywords for 3rd party tools seems like mocking
> the damn good state of the art meta-programming system D has.
I believe, but am not sure, that user-defined @tributes would require
an AST macro system, so that e.g. transitive @tributes may be enforced.
This is not something D's current MP capabilities cover.
> If I could design D, I'd use @ in front of every keyword to avoid
> namespace collisions with user symbols.
@module foo;
@safe:
@import std.stdio;
@class Bar {
@private:
@static @property @pure @immutable Bar myBar( ) {
@try {
@if ( baz @in qux ) {
} @else {
}
} @catch {
}
}
}
Really?
Note: it may be that your post was all irony, in which case it was
a bit hard to decipher.
--
Simen
More information about the Digitalmars-d
mailing list