Top 5
downs
default_357-line at yahoo.de
Thu Oct 9 13:08:28 PDT 2008
Andrei Alexandrescu wrote:
> downs wrote:
>> Andrei Alexandrescu wrote:
>>> Ok, per Aarti's suggestion: without speaking officially for Walter,
>>> let me ask this - what do you think are the top issues you'd like
>>> to see fixed in D?
>>>
>>> Andrei
>>
>> Let me throw in mine as well.
>>
>> As per request, I won't list enhancements, only things I perceive to
>> be issues with D as it _currently_ is.
>>
Oh my god somebody important answered. I'm really calm right now and I'm hoping to finish writing this response before the wave of excitement hits.
>> 1) the Phobos/Tango schism.
>
> Consider it done.
>
You have my gratitude.
>> 2) CTFE leaks. (been bitten by this recently)
>
> Yah.
>
Good to know I'm not the only one.
>> 3) the Exception/Error problem (they're different things, they
>> shouldn't inherit!)
>
> I think Exception should inherit Error.
>
I agree. Certainly a step up from Error inheriting Exception! :)
>> 4) std.zip
>
> Haven't gotten around to it, but I promise I will. I also have a tar
> file reader hanging around my code somewhere, but I'd first need to work
> on an extensible archive interface first.
>
>> 5) contracts under inheritance.
>
> Go on...
>
Basically, contracts imply that a method "promises" to behave in a certain way.
Thus, any subclasses' methods (the public ones at least) should relax the in { } of the "parent" method, and strengthen the out { }, in a logical extension of covariance and contravariance.
The first of those works. The second, however, does not.
Here's some code that demonstrates the problem.
class A {
int test()
out(result) { assert(result < 10); }
body { return 8; }
}
class B : A {
override int test() { return 15; }
}
import std.stdio;
void main() {
A a = new B;
writefln(a.test()); // violates contract, but does not fail.
}
>> Feature improvements would be:
>>
>> 1) AST manipulation at compile-time (this might supercede and
>> deprecate templates _and_ CTFE by merging them into a common
>> component) 2) auto return type 3) reference types 4) tuple syntax 5)
>> trailing delegates.
>
> I think this won't come around before D3.
>
I wouldn't expect it any earlier.
>> Of course, all of these have been brought up before (and mostly
>> ignored), so I don't hold much hope.
>
> I understand.
>
>
> Andrei
Thank you for taking the time to read the original post, and your response.
--downs
More information about the Digitalmars-d
mailing list