I have a bit of code:
string[] returnValue;
foreach(string key, string[] value; groups) {
returnValue ~=
value.sort!debianPackageNumberComparator()[0..$-1].array;
}
return returnValue;
which does seem to do the thing required, but this sort of code in
Python, Rust, even C++ (but not Go), would be seen as for too "changing
state", not declarative enough. With Python you use list comprehensions
(which are lovely things), in Rust you can do flat_map and collect. I
am fighting in D starting from:
return groups.byPair()
.map((Tuple!(string, string[]) a) =>
a[1].sort!debianPackageNumberComparator()[0..$-1])
.array
.joiner;
because the compiler keeps complaining about:
ldc2 '-Isource/approx-gc@exe' '-Isource'
'-I../../Repositories/Git/Masters/ApproxGC_D/source' '-enable-color' '-wi'
'-O3' '-release' -of 'source/approx-gc@exe/main.d.o' -c
../../Repositories/Git/Masters/ApproxGC_D/source/main.d
../../Repositories/Git/Masters/ApproxGC_D/source/main.d(75): Error: template
std.algorithm.iteration.map cannot deduce function from argument types
!()(MapResult!(__lambda2, Result), SortedRange!(string[],
debianPackageNumberComparator) function(Tuple!(string, string[]) a) @system),
candidates are:
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/algorithm/iteration.d(448):
std.algorithm.iteration.map(fun...) if (fun.length >= 1)
Anyone any idea on how to move forward on this?
--
Russel.
=============================================================================
Dr Russel Winder t: +44 20 7585 2200 voip: sip:[email protected]
41 Buckmaster Road m: +44 7770 465 077 xmpp: [email protected]
London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
signature.asc
Description: This is a digitally signed message part
