On 29-04-2012 00:18, Manu wrote:
On 28 April 2012 21:47, Walter Bright <newshou...@digitalmars.com
<mailto:newshou...@digitalmars.com>> wrote:

    Andrei and I had a fun discussion last night about this question.
    The idea was which features in D are redundant and/or do not add
    significant value?

    A couple already agreed upon ones are typedef and the cfloat,
    cdouble and creal types.

    What's your list?


I personally find the wealth of features in D to be one of it's major
selling points. It helps simplify user code a lot, but I think there is
room for some things to be more consistent:

* version refuses to allow boolean logic, I need boolean logic, thus
version is redundant to me. I find myself using static if almost
exclusively in its place. I like the *idea*, but it's un-usably limited.

+1.

* Consolidation of meta/introspection: __traits(), std.traits, is(), and
a few other tricks, I often don't know where I should look to perform a
particular introspection task. __traits is unsightly, it looks more like
a hack rather than a feature, but it fills perhaps one of the most vital
roles in the language.
* D has a lot of attributes, many of which I haven't used + don't
understand. I suspect many of them could be removed and implemented in
the library with a proper user attribute system (which would be really
useful to compliment D's introspection anyway). This would also free
those keywords when those libraries aren't imported/used.
* I don't know the value of AA's in the language, I've only used them
once or twice. Because AA's can be implemented in numerous ways (map,
hash table, etc), and may be ordered or unordered, the the choice of
which to use is actually important to the problem more often than not.
As long as the same convenience can be achieved in the library (literal
expression?), maybe it should be there.


--
- Alex

Reply via email to