Simen kjaeraas: > byKey is essentially an opApply. You have to wrap it in a fiber to make it > work with the range interface:
Thank you for all your code and work. I have found a bug (it's not a bug of yours): if I compile your code with -release, DMD prints: test.d(45): Error: function D main is a nested function and cannot be accessed from array test.d(45): Error: function D main is a nested function and cannot be accessed from array Where the line 45 is the one that starts with: auto o = map!(... I use D associative arrays often (it comes from my Python practice), I suggest to modify AAs to change byKey() and byValue() into ranges usable with std.algorithm. AAs may become iterable with zero method calls too (this is equivalent to byKey or byValue): map!q{a*10}([1:2, 3:4]) And I suggest to add a third associative array member function that returns a range of key,value tuples, as in Python3. This allows to solve the task like this: auto r = map!q{ tuple(a[0]*10, a[1]~a[1]) }(aa.byPair()); Bye, bearophile