Why D is annoying =P
Mehrdad
wfunction at hotmail.com
Wed Oct 24 13:16:27 PDT 2012
On Wednesday, 24 October 2012 at 20:03:44 UTC, H. S. Teoh wrote:
> What's wrong with RedBlackTree? You can just do something like:
>
> RedBlackTree!(RedBlackTree!MySet) setOfSets;
The last time I checked two RedBlackTrees for equality, they
seemed to have reference semantics...
>
> [...]
>> So you can't really write a real program in D, to put it
>> blunty.
>
> That's a bit harsh.
Sorry, just saying what I experienced :(
> It's not hard to write your own hash implementation in D
I beg to differ, see below
> given the expressiveness of its templates and compile-time
> features. The bugginess of the built-in AA is lamentable,
> definitely, but it doesn't *prevent* you from writing your own
> data structures.
It does. There's simply no mechanism to hash an arbitrary thing
in D.
(hashOf, which Andrej just mentioned, is an internal thing,
right? aka a hack, which I was not aware of)
> All programmers worth their salt should be able to roll their
> own where the current implementation is inadequate, anyway. ;-)
Well, there's different issues involved...
- Can I? Yes.
- Will I? No, it takes more time than it's worth
> In any case, as they say in the open source community, patches
> are always welcome.
Yeah, it's just that I can't figure out even the basics of
hashing in D (above), so I can't really patch something because
then it'll turn out to be working in a different way than I
expect.
> It only takes 15 minutes to write your own opEquals() in a
> struct that wraps around an AA
I've spent longer than that right now and still haven't been able
to (but I haven't tried the hashOf hack yet).
Maybe you can fill in the blanks?
struct Set(T)
{
int[T] dict;
hash_t toHash() const
{
typeof(return) r = 0;
foreach (item; this.dict.keys)
{
??? // what should be here?
}
return r;
}
}
More information about the Digitalmars-d
mailing list