I'm trying to analyze the usage of certain words in a large number of spam emails, and I want for every interesting word a list of 'providors', that mentioned that word. with associative arrays I hoped to get it by using array["interestingworde].

And I have to refer outside from sort(x,y) as associative arrays have no order, I'll always have to sort a key-array according to values obtained through the associative array.
It's supposed to be a delegate anyway, otherwise the least it could do is throw a compilation error.


2014-05-28 12:53 GMT+02:00 Wanderer via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com>:
On Wednesday, 28 May 2014 at 10:10:41 UTC, maarten van damme via

Digitalmars-d-learn wrote:
an anyone explain me what I'm doing wrong here :

[code]
dstring[][dstring] providor_symbol_map;
...

writeln(providor_symbol_map.keys.sort!((x,y)=>providor_symbol_map[x].length>=providor_symbol_map[y].length));
[/code]

output:
core.exception.RangeError@std.algorithm(9429): Range violation

"dstring[][dstring]" declaration looks a bit obscure to me...
what do you intent with it, "array of maps" or "map of arrays"?

Also, it looks unnatural that inside sorting lambda, you refer
outside from it (back to providor_symbol_map variable). Ideally,
you should only use variables x and y. Does D support sorting by
map entries instead of by keys only or by values only?